/*
* generated by Xtext
*/
package xtext.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.xtext.common.services.TerminalsGrammarAccess;

@Singleton
public class XModifGrammarAccess extends AbstractGrammarElementFinder {
	
	
	public class ModificationsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Modifications");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final UnorderedGroup cUnorderedGroup_0 = (UnorderedGroup)cGroup.eContents().get(0);
		private final Assignment cRemoveAllAnnotationsAssignment_0_0 = (Assignment)cUnorderedGroup_0.eContents().get(0);
		private final Keyword cRemoveAllAnnotationsRemoveAllAnnotationsKeyword_0_0_0 = (Keyword)cRemoveAllAnnotationsAssignment_0_0.eContents().get(0);
		private final Assignment cRemoveAllOperationsAssignment_0_1 = (Assignment)cUnorderedGroup_0.eContents().get(1);
		private final Keyword cRemoveAllOperationsRemoveAllOperationsKeyword_0_1_0 = (Keyword)cRemoveAllOperationsAssignment_0_1.eContents().get(0);
		private final Assignment cRemoveAllEStringAttributesAssignment_0_2 = (Assignment)cUnorderedGroup_0.eContents().get(2);
		private final Keyword cRemoveAllEStringAttributesRemoveAllEStringAttributesKeyword_0_2_0 = (Keyword)cRemoveAllEStringAttributesAssignment_0_2.eContents().get(0);
		private final Assignment cRemoveAllOppositesAssignment_0_3 = (Assignment)cUnorderedGroup_0.eContents().get(3);
		private final Keyword cRemoveAllOppositesRemoveAllOppositesKeyword_0_3_0 = (Keyword)cRemoveAllOppositesAssignment_0_3.eContents().get(0);
		private final Assignment cAddAllOppositeAssignment_0_4 = (Assignment)cUnorderedGroup_0.eContents().get(4);
		private final Keyword cAddAllOppositeAddAllOppositeKeyword_0_4_0 = (Keyword)cAddAllOppositeAssignment_0_4.eContents().get(0);
		private final Group cGroup_0_5 = (Group)cUnorderedGroup_0.eContents().get(5);
		private final Keyword cAddRootClassKeyword_0_5_0 = (Keyword)cGroup_0_5.eContents().get(0);
		private final Assignment cAddRootClassAssignment_0_5_1 = (Assignment)cGroup_0_5.eContents().get(1);
		private final RuleCall cAddRootClassAddRootClassParserRuleCall_0_5_1_0 = (RuleCall)cAddRootClassAssignment_0_5_1.eContents().get(0);
		private final Group cGroup_0_6 = (Group)cUnorderedGroup_0.eContents().get(6);
		private final Keyword cAddNameClassKeyword_0_6_0 = (Keyword)cGroup_0_6.eContents().get(0);
		private final Assignment cAddNameClassAssignment_0_6_1 = (Assignment)cGroup_0_6.eContents().get(1);
		private final RuleCall cAddNameClassAddNameClassParserRuleCall_0_6_1_0 = (RuleCall)cAddNameClassAssignment_0_6_1.eContents().get(0);
		private final Keyword cRootKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cRootPackageModificationAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cRootPackageModificationPackageModificationParserRuleCall_2_0 = (RuleCall)cRootPackageModificationAssignment_2.eContents().get(0);
		
		//Modifications:
		//	(removeAllAnnotations?="removeAllAnnotations"? & removeAllOperations?="removeAllOperations"? &
		//	removeAllEStringAttributes?="removeAllEStringAttributes"? & removeAllOpposites?="removeAllOpposites"? &
		//	addAllOpposite?="addAllOpposite"? & ("addRootClass" addRootClass=AddRootClass)? & ("addNameClass"
		//	addNameClass=AddNameClass)?) //	{Modifications}	
		//	"root" rootPackageModification=PackageModification;
		public ParserRule getRule() { return rule; }

		//(removeAllAnnotations?="removeAllAnnotations"? & removeAllOperations?="removeAllOperations"? &
		//removeAllEStringAttributes?="removeAllEStringAttributes"? & removeAllOpposites?="removeAllOpposites"? &
		//addAllOpposite?="addAllOpposite"? & ("addRootClass" addRootClass=AddRootClass)? & ("addNameClass"
		//addNameClass=AddNameClass)?) //	{Modifications}	
		//"root" rootPackageModification=PackageModification
		public Group getGroup() { return cGroup; }

		//removeAllAnnotations?="removeAllAnnotations"? & removeAllOperations?="removeAllOperations"? &
		//removeAllEStringAttributes?="removeAllEStringAttributes"? & removeAllOpposites?="removeAllOpposites"? &
		//addAllOpposite?="addAllOpposite"? & ("addRootClass" addRootClass=AddRootClass)? & ("addNameClass"
		//addNameClass=AddNameClass)?
		public UnorderedGroup getUnorderedGroup_0() { return cUnorderedGroup_0; }

		//removeAllAnnotations?="removeAllAnnotations"?
		public Assignment getRemoveAllAnnotationsAssignment_0_0() { return cRemoveAllAnnotationsAssignment_0_0; }

		//"removeAllAnnotations"
		public Keyword getRemoveAllAnnotationsRemoveAllAnnotationsKeyword_0_0_0() { return cRemoveAllAnnotationsRemoveAllAnnotationsKeyword_0_0_0; }

		//removeAllOperations?="removeAllOperations"?
		public Assignment getRemoveAllOperationsAssignment_0_1() { return cRemoveAllOperationsAssignment_0_1; }

		//"removeAllOperations"
		public Keyword getRemoveAllOperationsRemoveAllOperationsKeyword_0_1_0() { return cRemoveAllOperationsRemoveAllOperationsKeyword_0_1_0; }

		//removeAllEStringAttributes?="removeAllEStringAttributes"?
		public Assignment getRemoveAllEStringAttributesAssignment_0_2() { return cRemoveAllEStringAttributesAssignment_0_2; }

		//"removeAllEStringAttributes"
		public Keyword getRemoveAllEStringAttributesRemoveAllEStringAttributesKeyword_0_2_0() { return cRemoveAllEStringAttributesRemoveAllEStringAttributesKeyword_0_2_0; }

		//removeAllOpposites?="removeAllOpposites"?
		public Assignment getRemoveAllOppositesAssignment_0_3() { return cRemoveAllOppositesAssignment_0_3; }

		//"removeAllOpposites"
		public Keyword getRemoveAllOppositesRemoveAllOppositesKeyword_0_3_0() { return cRemoveAllOppositesRemoveAllOppositesKeyword_0_3_0; }

		//addAllOpposite?="addAllOpposite"?
		public Assignment getAddAllOppositeAssignment_0_4() { return cAddAllOppositeAssignment_0_4; }

		//"addAllOpposite"
		public Keyword getAddAllOppositeAddAllOppositeKeyword_0_4_0() { return cAddAllOppositeAddAllOppositeKeyword_0_4_0; }

		//("addRootClass" addRootClass=AddRootClass)?
		public Group getGroup_0_5() { return cGroup_0_5; }

		//"addRootClass"
		public Keyword getAddRootClassKeyword_0_5_0() { return cAddRootClassKeyword_0_5_0; }

		//addRootClass=AddRootClass
		public Assignment getAddRootClassAssignment_0_5_1() { return cAddRootClassAssignment_0_5_1; }

		//AddRootClass
		public RuleCall getAddRootClassAddRootClassParserRuleCall_0_5_1_0() { return cAddRootClassAddRootClassParserRuleCall_0_5_1_0; }

		//("addNameClass" addNameClass=AddNameClass)?
		public Group getGroup_0_6() { return cGroup_0_6; }

		//"addNameClass"
		public Keyword getAddNameClassKeyword_0_6_0() { return cAddNameClassKeyword_0_6_0; }

		//addNameClass=AddNameClass
		public Assignment getAddNameClassAssignment_0_6_1() { return cAddNameClassAssignment_0_6_1; }

		//AddNameClass
		public RuleCall getAddNameClassAddNameClassParserRuleCall_0_6_1_0() { return cAddNameClassAddNameClassParserRuleCall_0_6_1_0; }

		//"root"
		public Keyword getRootKeyword_1() { return cRootKeyword_1; }

		//rootPackageModification=PackageModification
		public Assignment getRootPackageModificationAssignment_2() { return cRootPackageModificationAssignment_2; }

		//PackageModification
		public RuleCall getRootPackageModificationPackageModificationParserRuleCall_2_0() { return cRootPackageModificationPackageModificationParserRuleCall_2_0; }
	}

	public class AddDerivedElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AddDerived");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cAddDerivedReferenceParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cAddDerivedAttributeParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//AddDerived:
		//	AddDerivedReference | AddDerivedAttribute;
		public ParserRule getRule() { return rule; }

		//AddDerivedReference | AddDerivedAttribute
		public Alternatives getAlternatives() { return cAlternatives; }

		//AddDerivedReference
		public RuleCall getAddDerivedReferenceParserRuleCall_0() { return cAddDerivedReferenceParserRuleCall_0; }

		//AddDerivedAttribute
		public RuleCall getAddDerivedAttributeParserRuleCall_1() { return cAddDerivedAttributeParserRuleCall_1; }
	}

	public class PackageModificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PackageModification");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cRemoveAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Keyword cRemoveRemoveKeyword_0_0 = (Keyword)cRemoveAssignment_0.eContents().get(0);
		private final Assignment cHideAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final Keyword cHideHideKeyword_1_0 = (Keyword)cHideAssignment_1.eContents().get(0);
		private final Assignment cOldNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cOldNameEStringParserRuleCall_2_0 = (RuleCall)cOldNameAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cToKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cNewNameAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cNewNameEStringParserRuleCall_3_1_0 = (RuleCall)cNewNameAssignment_3_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cPrefixKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOldPrefixNameAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOldPrefixNameEStringParserRuleCall_4_1_0 = (RuleCall)cOldPrefixNameAssignment_4_1.eContents().get(0);
		private final Keyword cToKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Assignment cNewPrefixNameAssignment_4_3 = (Assignment)cGroup_4.eContents().get(3);
		private final RuleCall cNewPrefixNameEStringParserRuleCall_4_3_0 = (RuleCall)cNewPrefixNameAssignment_4_3.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cURIKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cOldURINameAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cOldURINameEStringParserRuleCall_5_1_0 = (RuleCall)cOldURINameAssignment_5_1.eContents().get(0);
		private final Keyword cToKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
		private final Assignment cNewURINameAssignment_5_3 = (Assignment)cGroup_5.eContents().get(3);
		private final RuleCall cNewURINameEStringParserRuleCall_5_3_0 = (RuleCall)cNewURINameAssignment_5_3.eContents().get(0);
		private final Assignment cRemoveEAnnotationsAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final Keyword cRemoveEAnnotationsRemoveEAnnotationsKeyword_6_0 = (Keyword)cRemoveEAnnotationsAssignment_6.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cPackageKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cPackageModificationAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cPackageModificationPackageModificationParserRuleCall_7_2_0 = (RuleCall)cPackageModificationAssignment_7_2.eContents().get(0);
		private final Group cGroup_7_3 = (Group)cGroup_7.eContents().get(3);
		private final Keyword cSemicolonKeyword_7_3_0 = (Keyword)cGroup_7_3.eContents().get(0);
		private final Assignment cPackageModificationAssignment_7_3_1 = (Assignment)cGroup_7_3.eContents().get(1);
		private final RuleCall cPackageModificationPackageModificationParserRuleCall_7_3_1_0 = (RuleCall)cPackageModificationAssignment_7_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7_4 = (Keyword)cGroup_7.eContents().get(4);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cClassKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cClassModificationAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final RuleCall cClassModificationClassModificationParserRuleCall_8_2_0 = (RuleCall)cClassModificationAssignment_8_2.eContents().get(0);
		private final Group cGroup_8_3 = (Group)cGroup_8.eContents().get(3);
		private final Keyword cSemicolonKeyword_8_3_0 = (Keyword)cGroup_8_3.eContents().get(0);
		private final Assignment cClassModificationAssignment_8_3_1 = (Assignment)cGroup_8_3.eContents().get(1);
		private final RuleCall cClassModificationClassModificationParserRuleCall_8_3_1_0 = (RuleCall)cClassModificationAssignment_8_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_8_4 = (Keyword)cGroup_8.eContents().get(4);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cDataTypeKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
		private final Assignment cDataTypeModificationAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
		private final RuleCall cDataTypeModificationDataTypeModificationParserRuleCall_9_2_0 = (RuleCall)cDataTypeModificationAssignment_9_2.eContents().get(0);
		private final Group cGroup_9_3 = (Group)cGroup_9.eContents().get(3);
		private final Keyword cSemicolonKeyword_9_3_0 = (Keyword)cGroup_9_3.eContents().get(0);
		private final Assignment cDataTypeModificationAssignment_9_3_1 = (Assignment)cGroup_9_3.eContents().get(1);
		private final RuleCall cDataTypeModificationDataTypeModificationParserRuleCall_9_3_1_0 = (RuleCall)cDataTypeModificationAssignment_9_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_9_4 = (Keyword)cGroup_9.eContents().get(4);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cEnumModificationKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_10_1 = (Keyword)cGroup_10.eContents().get(1);
		private final Assignment cEnumModificationAssignment_10_2 = (Assignment)cGroup_10.eContents().get(2);
		private final RuleCall cEnumModificationEnumModificationParserRuleCall_10_2_0 = (RuleCall)cEnumModificationAssignment_10_2.eContents().get(0);
		private final Group cGroup_10_3 = (Group)cGroup_10.eContents().get(3);
		private final Keyword cSemicolonKeyword_10_3_0 = (Keyword)cGroup_10_3.eContents().get(0);
		private final Assignment cEnumModificationAssignment_10_3_1 = (Assignment)cGroup_10_3.eContents().get(1);
		private final RuleCall cEnumModificationEnumModificationParserRuleCall_10_3_1_0 = (RuleCall)cEnumModificationAssignment_10_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_10_4 = (Keyword)cGroup_10.eContents().get(4);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cAnnotationKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_11_1 = (Keyword)cGroup_11.eContents().get(1);
		private final Assignment cAnnotationModificationAssignment_11_2 = (Assignment)cGroup_11.eContents().get(2);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_11_2_0 = (RuleCall)cAnnotationModificationAssignment_11_2.eContents().get(0);
		private final Group cGroup_11_3 = (Group)cGroup_11.eContents().get(3);
		private final Keyword cSemicolonKeyword_11_3_0 = (Keyword)cGroup_11_3.eContents().get(0);
		private final Assignment cAnnotationModificationAssignment_11_3_1 = (Assignment)cGroup_11_3.eContents().get(1);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_11_3_1_0 = (RuleCall)cAnnotationModificationAssignment_11_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_11_4 = (Keyword)cGroup_11.eContents().get(4);
		
		//PackageModification:
		//	remove?="remove"? hide?="hide"? oldName=EString ("to" newName=EString)? ("Prefix" oldPrefixName=EString? "to"
		//	newPrefixName=EString)? ("URI" oldURIName=EString? "to" newURIName=EString)?
		//	removeEAnnotations?="removeEAnnotations"? ("package" "{" packageModification+=PackageModification (";"
		//	packageModification+=PackageModification)* "}")? ("class" "{" classModification+=ClassModification (";"
		//	classModification+=ClassModification)* "}")? ("dataType" "{" dataTypeModification+=DataTypeModification (";"
		//	dataTypeModification+=DataTypeModification)* "}")? ("enumModification" "{" enumModification+=EnumModification (";"
		//	enumModification+=EnumModification)* "}")? ("annotation" "{" annotationModification+=AnnotationModification (";"
		//	annotationModification+=AnnotationModification)* "}")?;
		public ParserRule getRule() { return rule; }

		//remove?="remove"? hide?="hide"? oldName=EString ("to" newName=EString)? ("Prefix" oldPrefixName=EString? "to"
		//newPrefixName=EString)? ("URI" oldURIName=EString? "to" newURIName=EString)? removeEAnnotations?="removeEAnnotations"?
		//("package" "{" packageModification+=PackageModification (";" packageModification+=PackageModification)* "}")? ("class"
		//"{" classModification+=ClassModification (";" classModification+=ClassModification)* "}")? ("dataType" "{"
		//dataTypeModification+=DataTypeModification (";" dataTypeModification+=DataTypeModification)* "}")? ("enumModification"
		//"{" enumModification+=EnumModification (";" enumModification+=EnumModification)* "}")? ("annotation" "{"
		//annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?
		public Group getGroup() { return cGroup; }

		//remove?="remove"?
		public Assignment getRemoveAssignment_0() { return cRemoveAssignment_0; }

		//"remove"
		public Keyword getRemoveRemoveKeyword_0_0() { return cRemoveRemoveKeyword_0_0; }

		//hide?="hide"?
		public Assignment getHideAssignment_1() { return cHideAssignment_1; }

		//"hide"
		public Keyword getHideHideKeyword_1_0() { return cHideHideKeyword_1_0; }

		//oldName=EString
		public Assignment getOldNameAssignment_2() { return cOldNameAssignment_2; }

		//EString
		public RuleCall getOldNameEStringParserRuleCall_2_0() { return cOldNameEStringParserRuleCall_2_0; }

		//("to" newName=EString)?
		public Group getGroup_3() { return cGroup_3; }

		//"to"
		public Keyword getToKeyword_3_0() { return cToKeyword_3_0; }

		//newName=EString
		public Assignment getNewNameAssignment_3_1() { return cNewNameAssignment_3_1; }

		//EString
		public RuleCall getNewNameEStringParserRuleCall_3_1_0() { return cNewNameEStringParserRuleCall_3_1_0; }

		//("Prefix" oldPrefixName=EString? "to" newPrefixName=EString)?
		public Group getGroup_4() { return cGroup_4; }

		//"Prefix"
		public Keyword getPrefixKeyword_4_0() { return cPrefixKeyword_4_0; }

		//oldPrefixName=EString?
		public Assignment getOldPrefixNameAssignment_4_1() { return cOldPrefixNameAssignment_4_1; }

		//EString
		public RuleCall getOldPrefixNameEStringParserRuleCall_4_1_0() { return cOldPrefixNameEStringParserRuleCall_4_1_0; }

		//"to"
		public Keyword getToKeyword_4_2() { return cToKeyword_4_2; }

		//newPrefixName=EString
		public Assignment getNewPrefixNameAssignment_4_3() { return cNewPrefixNameAssignment_4_3; }

		//EString
		public RuleCall getNewPrefixNameEStringParserRuleCall_4_3_0() { return cNewPrefixNameEStringParserRuleCall_4_3_0; }

		//("URI" oldURIName=EString? "to" newURIName=EString)?
		public Group getGroup_5() { return cGroup_5; }

		//"URI"
		public Keyword getURIKeyword_5_0() { return cURIKeyword_5_0; }

		//oldURIName=EString?
		public Assignment getOldURINameAssignment_5_1() { return cOldURINameAssignment_5_1; }

		//EString
		public RuleCall getOldURINameEStringParserRuleCall_5_1_0() { return cOldURINameEStringParserRuleCall_5_1_0; }

		//"to"
		public Keyword getToKeyword_5_2() { return cToKeyword_5_2; }

		//newURIName=EString
		public Assignment getNewURINameAssignment_5_3() { return cNewURINameAssignment_5_3; }

		//EString
		public RuleCall getNewURINameEStringParserRuleCall_5_3_0() { return cNewURINameEStringParserRuleCall_5_3_0; }

		//removeEAnnotations?="removeEAnnotations"?
		public Assignment getRemoveEAnnotationsAssignment_6() { return cRemoveEAnnotationsAssignment_6; }

		//"removeEAnnotations"
		public Keyword getRemoveEAnnotationsRemoveEAnnotationsKeyword_6_0() { return cRemoveEAnnotationsRemoveEAnnotationsKeyword_6_0; }

		//("package" "{" packageModification+=PackageModification (";" packageModification+=PackageModification)* "}")?
		public Group getGroup_7() { return cGroup_7; }

		//"package"
		public Keyword getPackageKeyword_7_0() { return cPackageKeyword_7_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_7_1() { return cLeftCurlyBracketKeyword_7_1; }

		//packageModification+=PackageModification
		public Assignment getPackageModificationAssignment_7_2() { return cPackageModificationAssignment_7_2; }

		//PackageModification
		public RuleCall getPackageModificationPackageModificationParserRuleCall_7_2_0() { return cPackageModificationPackageModificationParserRuleCall_7_2_0; }

		//(";" packageModification+=PackageModification)*
		public Group getGroup_7_3() { return cGroup_7_3; }

		//";"
		public Keyword getSemicolonKeyword_7_3_0() { return cSemicolonKeyword_7_3_0; }

		//packageModification+=PackageModification
		public Assignment getPackageModificationAssignment_7_3_1() { return cPackageModificationAssignment_7_3_1; }

		//PackageModification
		public RuleCall getPackageModificationPackageModificationParserRuleCall_7_3_1_0() { return cPackageModificationPackageModificationParserRuleCall_7_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_7_4() { return cRightCurlyBracketKeyword_7_4; }

		//("class" "{" classModification+=ClassModification (";" classModification+=ClassModification)* "}")?
		public Group getGroup_8() { return cGroup_8; }

		//"class"
		public Keyword getClassKeyword_8_0() { return cClassKeyword_8_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_8_1() { return cLeftCurlyBracketKeyword_8_1; }

		//classModification+=ClassModification
		public Assignment getClassModificationAssignment_8_2() { return cClassModificationAssignment_8_2; }

		//ClassModification
		public RuleCall getClassModificationClassModificationParserRuleCall_8_2_0() { return cClassModificationClassModificationParserRuleCall_8_2_0; }

		//(";" classModification+=ClassModification)*
		public Group getGroup_8_3() { return cGroup_8_3; }

		//";"
		public Keyword getSemicolonKeyword_8_3_0() { return cSemicolonKeyword_8_3_0; }

		//classModification+=ClassModification
		public Assignment getClassModificationAssignment_8_3_1() { return cClassModificationAssignment_8_3_1; }

		//ClassModification
		public RuleCall getClassModificationClassModificationParserRuleCall_8_3_1_0() { return cClassModificationClassModificationParserRuleCall_8_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_8_4() { return cRightCurlyBracketKeyword_8_4; }

		//("dataType" "{" dataTypeModification+=DataTypeModification (";" dataTypeModification+=DataTypeModification)* "}")?
		public Group getGroup_9() { return cGroup_9; }

		//"dataType"
		public Keyword getDataTypeKeyword_9_0() { return cDataTypeKeyword_9_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_9_1() { return cLeftCurlyBracketKeyword_9_1; }

		//dataTypeModification+=DataTypeModification
		public Assignment getDataTypeModificationAssignment_9_2() { return cDataTypeModificationAssignment_9_2; }

		//DataTypeModification
		public RuleCall getDataTypeModificationDataTypeModificationParserRuleCall_9_2_0() { return cDataTypeModificationDataTypeModificationParserRuleCall_9_2_0; }

		//(";" dataTypeModification+=DataTypeModification)*
		public Group getGroup_9_3() { return cGroup_9_3; }

		//";"
		public Keyword getSemicolonKeyword_9_3_0() { return cSemicolonKeyword_9_3_0; }

		//dataTypeModification+=DataTypeModification
		public Assignment getDataTypeModificationAssignment_9_3_1() { return cDataTypeModificationAssignment_9_3_1; }

		//DataTypeModification
		public RuleCall getDataTypeModificationDataTypeModificationParserRuleCall_9_3_1_0() { return cDataTypeModificationDataTypeModificationParserRuleCall_9_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_9_4() { return cRightCurlyBracketKeyword_9_4; }

		//("enumModification" "{" enumModification+=EnumModification (";" enumModification+=EnumModification)* "}")?
		public Group getGroup_10() { return cGroup_10; }

		//"enumModification"
		public Keyword getEnumModificationKeyword_10_0() { return cEnumModificationKeyword_10_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_10_1() { return cLeftCurlyBracketKeyword_10_1; }

		//enumModification+=EnumModification
		public Assignment getEnumModificationAssignment_10_2() { return cEnumModificationAssignment_10_2; }

		//EnumModification
		public RuleCall getEnumModificationEnumModificationParserRuleCall_10_2_0() { return cEnumModificationEnumModificationParserRuleCall_10_2_0; }

		//(";" enumModification+=EnumModification)*
		public Group getGroup_10_3() { return cGroup_10_3; }

		//";"
		public Keyword getSemicolonKeyword_10_3_0() { return cSemicolonKeyword_10_3_0; }

		//enumModification+=EnumModification
		public Assignment getEnumModificationAssignment_10_3_1() { return cEnumModificationAssignment_10_3_1; }

		//EnumModification
		public RuleCall getEnumModificationEnumModificationParserRuleCall_10_3_1_0() { return cEnumModificationEnumModificationParserRuleCall_10_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_10_4() { return cRightCurlyBracketKeyword_10_4; }

		//("annotation" "{" annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)*
		//"}")?
		public Group getGroup_11() { return cGroup_11; }

		//"annotation"
		public Keyword getAnnotationKeyword_11_0() { return cAnnotationKeyword_11_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_11_1() { return cLeftCurlyBracketKeyword_11_1; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_11_2() { return cAnnotationModificationAssignment_11_2; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_11_2_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_11_2_0; }

		//(";" annotationModification+=AnnotationModification)*
		public Group getGroup_11_3() { return cGroup_11_3; }

		//";"
		public Keyword getSemicolonKeyword_11_3_0() { return cSemicolonKeyword_11_3_0; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_11_3_1() { return cAnnotationModificationAssignment_11_3_1; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_11_3_1_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_11_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_11_4() { return cRightCurlyBracketKeyword_11_4; }
	}

	public class AddRootClassElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AddRootClass");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cAddRootClassAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameEStringParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		
		//AddRootClass:
		//	{AddRootClass} name=EString;
		public ParserRule getRule() { return rule; }

		//{AddRootClass} name=EString
		public Group getGroup() { return cGroup; }

		//{AddRootClass}
		public Action getAddRootClassAction_0() { return cAddRootClassAction_0; }

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

		//EString
		public RuleCall getNameEStringParserRuleCall_1_0() { return cNameEStringParserRuleCall_1_0; }
	}

	public class AddNameClassElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AddNameClass");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameEStringParserRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameNameEStringParserRuleCall_2_0 = (RuleCall)cNameNameAssignment_2.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//AddNameClass:
		//	name=EString "(" nameName=EString ")";
		public ParserRule getRule() { return rule; }

		//name=EString "(" nameName=EString ")"
		public Group getGroup() { return cGroup; }

		//name=EString
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }

		//EString
		public RuleCall getNameEStringParserRuleCall_0_0() { return cNameEStringParserRuleCall_0_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }

		//nameName=EString
		public Assignment getNameNameAssignment_2() { return cNameNameAssignment_2; }

		//EString
		public RuleCall getNameNameEStringParserRuleCall_2_0() { return cNameNameEStringParserRuleCall_2_0; }

		//")"
		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
	}

	public class AnnotationModificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AnnotationModification");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cRemoveAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Keyword cRemoveRemoveKeyword_0_0 = (Keyword)cRemoveAssignment_0.eContents().get(0);
		private final Assignment cOldSourceAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOldSourceEStringParserRuleCall_1_0 = (RuleCall)cOldSourceAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cToKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cNewSourceAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cNewSourceEStringParserRuleCall_2_1_0 = (RuleCall)cNewSourceAssignment_2_1.eContents().get(0);
		private final Assignment cRemoveEAnnotationsAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final Keyword cRemoveEAnnotationsRemoveEAnnotationsKeyword_3_0 = (Keyword)cRemoveEAnnotationsAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cDetailsEntryKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cDetailsEntryModificationAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cDetailsEntryModificationDetailsEntryModificationParserRuleCall_4_2_0 = (RuleCall)cDetailsEntryModificationAssignment_4_2.eContents().get(0);
		private final Group cGroup_4_3 = (Group)cGroup_4.eContents().get(3);
		private final Keyword cSemicolonKeyword_4_3_0 = (Keyword)cGroup_4_3.eContents().get(0);
		private final Assignment cDetailsEntryModificationAssignment_4_3_1 = (Assignment)cGroup_4_3.eContents().get(1);
		private final RuleCall cDetailsEntryModificationDetailsEntryModificationParserRuleCall_4_3_1_0 = (RuleCall)cDetailsEntryModificationAssignment_4_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_4 = (Keyword)cGroup_4.eContents().get(4);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cAnnotationKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cAnnotationModificationAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_5_2_0 = (RuleCall)cAnnotationModificationAssignment_5_2.eContents().get(0);
		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
		private final Keyword cSemicolonKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
		private final Assignment cAnnotationModificationAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_5_3_1_0 = (RuleCall)cAnnotationModificationAssignment_5_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
		
		//AnnotationModification:
		//	remove?="remove"? oldSource=EString ("to" newSource=EString)? removeEAnnotations?="removeEAnnotations"?
		//	("detailsEntry" "{" detailsEntryModification+=DetailsEntryModification (";"
		//	detailsEntryModification+=DetailsEntryModification)* "}")? ("annotation" "{"
		//	annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?;
		public ParserRule getRule() { return rule; }

		//remove?="remove"? oldSource=EString ("to" newSource=EString)? removeEAnnotations?="removeEAnnotations"? ("detailsEntry"
		//"{" detailsEntryModification+=DetailsEntryModification (";" detailsEntryModification+=DetailsEntryModification)* "}")?
		//("annotation" "{" annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)*
		//"}")?
		public Group getGroup() { return cGroup; }

		//remove?="remove"?
		public Assignment getRemoveAssignment_0() { return cRemoveAssignment_0; }

		//"remove"
		public Keyword getRemoveRemoveKeyword_0_0() { return cRemoveRemoveKeyword_0_0; }

		//oldSource=EString
		public Assignment getOldSourceAssignment_1() { return cOldSourceAssignment_1; }

		//EString
		public RuleCall getOldSourceEStringParserRuleCall_1_0() { return cOldSourceEStringParserRuleCall_1_0; }

		//("to" newSource=EString)?
		public Group getGroup_2() { return cGroup_2; }

		//"to"
		public Keyword getToKeyword_2_0() { return cToKeyword_2_0; }

		//newSource=EString
		public Assignment getNewSourceAssignment_2_1() { return cNewSourceAssignment_2_1; }

		//EString
		public RuleCall getNewSourceEStringParserRuleCall_2_1_0() { return cNewSourceEStringParserRuleCall_2_1_0; }

		//removeEAnnotations?="removeEAnnotations"?
		public Assignment getRemoveEAnnotationsAssignment_3() { return cRemoveEAnnotationsAssignment_3; }

		//"removeEAnnotations"
		public Keyword getRemoveEAnnotationsRemoveEAnnotationsKeyword_3_0() { return cRemoveEAnnotationsRemoveEAnnotationsKeyword_3_0; }

		//("detailsEntry" "{" detailsEntryModification+=DetailsEntryModification (";"
		//detailsEntryModification+=DetailsEntryModification)* "}")?
		public Group getGroup_4() { return cGroup_4; }

		//"detailsEntry"
		public Keyword getDetailsEntryKeyword_4_0() { return cDetailsEntryKeyword_4_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_4_1() { return cLeftCurlyBracketKeyword_4_1; }

		//detailsEntryModification+=DetailsEntryModification
		public Assignment getDetailsEntryModificationAssignment_4_2() { return cDetailsEntryModificationAssignment_4_2; }

		//DetailsEntryModification
		public RuleCall getDetailsEntryModificationDetailsEntryModificationParserRuleCall_4_2_0() { return cDetailsEntryModificationDetailsEntryModificationParserRuleCall_4_2_0; }

		//(";" detailsEntryModification+=DetailsEntryModification)*
		public Group getGroup_4_3() { return cGroup_4_3; }

		//";"
		public Keyword getSemicolonKeyword_4_3_0() { return cSemicolonKeyword_4_3_0; }

		//detailsEntryModification+=DetailsEntryModification
		public Assignment getDetailsEntryModificationAssignment_4_3_1() { return cDetailsEntryModificationAssignment_4_3_1; }

		//DetailsEntryModification
		public RuleCall getDetailsEntryModificationDetailsEntryModificationParserRuleCall_4_3_1_0() { return cDetailsEntryModificationDetailsEntryModificationParserRuleCall_4_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_4_4() { return cRightCurlyBracketKeyword_4_4; }

		//("annotation" "{" annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)*
		//"}")?
		public Group getGroup_5() { return cGroup_5; }

		//"annotation"
		public Keyword getAnnotationKeyword_5_0() { return cAnnotationKeyword_5_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_5_1() { return cLeftCurlyBracketKeyword_5_1; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_5_2() { return cAnnotationModificationAssignment_5_2; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_5_2_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_5_2_0; }

		//(";" annotationModification+=AnnotationModification)*
		public Group getGroup_5_3() { return cGroup_5_3; }

		//";"
		public Keyword getSemicolonKeyword_5_3_0() { return cSemicolonKeyword_5_3_0; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_5_3_1() { return cAnnotationModificationAssignment_5_3_1; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_5_3_1_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_5_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_5_4() { return cRightCurlyBracketKeyword_5_4; }
	}

	public class ClassModificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ClassModification");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cRemoveAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Keyword cRemoveRemoveKeyword_0_0 = (Keyword)cRemoveAssignment_0.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_1 = (UnorderedGroup)cGroup.eContents().get(1);
		private final Assignment cHideAssignment_1_0 = (Assignment)cUnorderedGroup_1.eContents().get(0);
		private final Keyword cHideHideKeyword_1_0_0 = (Keyword)cHideAssignment_1_0.eContents().get(0);
		private final Assignment cFlattenAssignment_1_1 = (Assignment)cUnorderedGroup_1.eContents().get(1);
		private final Keyword cFlattenFlattenKeyword_1_1_0 = (Keyword)cFlattenAssignment_1_1.eContents().get(0);
		private final Assignment cFlattenAllAssignment_1_2 = (Assignment)cUnorderedGroup_1.eContents().get(2);
		private final Keyword cFlattenAllFlattenAllKeyword_1_2_0 = (Keyword)cFlattenAllAssignment_1_2.eContents().get(0);
		private final Assignment cOldNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cOldNameEStringParserRuleCall_2_0 = (RuleCall)cOldNameAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cToKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cNewNameAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cNewNameEStringParserRuleCall_3_1_0 = (RuleCall)cNewNameAssignment_3_1.eContents().get(0);
		private final UnorderedGroup cUnorderedGroup_4 = (UnorderedGroup)cGroup.eContents().get(4);
		private final Assignment cChangeAbstractAssignment_4_0 = (Assignment)cUnorderedGroup_4.eContents().get(0);
		private final Keyword cChangeAbstractChangeAbstractKeyword_4_0_0 = (Keyword)cChangeAbstractAssignment_4_0.eContents().get(0);
		private final Assignment cRemoveEAnnotationsAssignment_4_1 = (Assignment)cUnorderedGroup_4.eContents().get(1);
		private final Keyword cRemoveEAnnotationsRemoveEAnnotationsKeyword_4_1_0 = (Keyword)cRemoveEAnnotationsAssignment_4_1.eContents().get(0);
		private final Assignment cEnumerateAssignment_4_2 = (Assignment)cUnorderedGroup_4.eContents().get(2);
		private final RuleCall cEnumerateEnumerateParserRuleCall_4_2_0 = (RuleCall)cEnumerateAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cFeatureModificationAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cFeatureModificationStructuralFeatureModificationParserRuleCall_5_1_0 = (RuleCall)cFeatureModificationAssignment_5_1.eContents().get(0);
		private final Assignment cAddFeaturesAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cAddFeaturesAddFeatureParserRuleCall_5_2_0 = (RuleCall)cAddFeaturesAssignment_5_2.eContents().get(0);
		private final Assignment cAddDerivedsAssignment_5_3 = (Assignment)cGroup_5.eContents().get(3);
		private final RuleCall cAddDerivedsAddDerivedParserRuleCall_5_3_0 = (RuleCall)cAddDerivedsAssignment_5_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cAnnotationKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cAnnotationModificationAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_6_2_0 = (RuleCall)cAnnotationModificationAssignment_6_2.eContents().get(0);
		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
		private final Keyword cSemicolonKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
		private final Assignment cAnnotationModificationAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_6_3_1_0 = (RuleCall)cAnnotationModificationAssignment_6_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
		
		//ClassModification:
		//	remove?="remove"? (hide?="hide"? & flatten?="flatten"? & flattenAll?="flattenAll"?) oldName=EString ("to"
		//	newName=EString)? (changeAbstract?="changeAbstract"? & removeEAnnotations?="removeEAnnotations"? &
		//	enumerate=Enumerate?) ("{" featureModification+=StructuralFeatureModification* addFeatures+=AddFeature*
		//	addDeriveds+=AddDerived* "}")? ("annotation" "{" annotationModification+=AnnotationModification (";"
		//	annotationModification+=AnnotationModification)* "}")?;
		public ParserRule getRule() { return rule; }

		//remove?="remove"? (hide?="hide"? & flatten?="flatten"? & flattenAll?="flattenAll"?) oldName=EString ("to"
		//newName=EString)? (changeAbstract?="changeAbstract"? & removeEAnnotations?="removeEAnnotations"? &
		//enumerate=Enumerate?) ("{" featureModification+=StructuralFeatureModification* addFeatures+=AddFeature*
		//addDeriveds+=AddDerived* "}")? ("annotation" "{" annotationModification+=AnnotationModification (";"
		//annotationModification+=AnnotationModification)* "}")?
		public Group getGroup() { return cGroup; }

		//remove?="remove"?
		public Assignment getRemoveAssignment_0() { return cRemoveAssignment_0; }

		//"remove"
		public Keyword getRemoveRemoveKeyword_0_0() { return cRemoveRemoveKeyword_0_0; }

		//hide?="hide"? & flatten?="flatten"? & flattenAll?="flattenAll"?
		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }

		//hide?="hide"?
		public Assignment getHideAssignment_1_0() { return cHideAssignment_1_0; }

		//"hide"
		public Keyword getHideHideKeyword_1_0_0() { return cHideHideKeyword_1_0_0; }

		//flatten?="flatten"?
		public Assignment getFlattenAssignment_1_1() { return cFlattenAssignment_1_1; }

		//"flatten"
		public Keyword getFlattenFlattenKeyword_1_1_0() { return cFlattenFlattenKeyword_1_1_0; }

		//flattenAll?="flattenAll"?
		public Assignment getFlattenAllAssignment_1_2() { return cFlattenAllAssignment_1_2; }

		//"flattenAll"
		public Keyword getFlattenAllFlattenAllKeyword_1_2_0() { return cFlattenAllFlattenAllKeyword_1_2_0; }

		//oldName=EString
		public Assignment getOldNameAssignment_2() { return cOldNameAssignment_2; }

		//EString
		public RuleCall getOldNameEStringParserRuleCall_2_0() { return cOldNameEStringParserRuleCall_2_0; }

		//("to" newName=EString)?
		public Group getGroup_3() { return cGroup_3; }

		//"to"
		public Keyword getToKeyword_3_0() { return cToKeyword_3_0; }

		//newName=EString
		public Assignment getNewNameAssignment_3_1() { return cNewNameAssignment_3_1; }

		//EString
		public RuleCall getNewNameEStringParserRuleCall_3_1_0() { return cNewNameEStringParserRuleCall_3_1_0; }

		//changeAbstract?="changeAbstract"? & removeEAnnotations?="removeEAnnotations"? & enumerate=Enumerate?
		public UnorderedGroup getUnorderedGroup_4() { return cUnorderedGroup_4; }

		//changeAbstract?="changeAbstract"?
		public Assignment getChangeAbstractAssignment_4_0() { return cChangeAbstractAssignment_4_0; }

		//"changeAbstract"
		public Keyword getChangeAbstractChangeAbstractKeyword_4_0_0() { return cChangeAbstractChangeAbstractKeyword_4_0_0; }

		//removeEAnnotations?="removeEAnnotations"?
		public Assignment getRemoveEAnnotationsAssignment_4_1() { return cRemoveEAnnotationsAssignment_4_1; }

		//"removeEAnnotations"
		public Keyword getRemoveEAnnotationsRemoveEAnnotationsKeyword_4_1_0() { return cRemoveEAnnotationsRemoveEAnnotationsKeyword_4_1_0; }

		//enumerate=Enumerate?
		public Assignment getEnumerateAssignment_4_2() { return cEnumerateAssignment_4_2; }

		//Enumerate
		public RuleCall getEnumerateEnumerateParserRuleCall_4_2_0() { return cEnumerateEnumerateParserRuleCall_4_2_0; }

		//("{" featureModification+=StructuralFeatureModification* addFeatures+=AddFeature* addDeriveds+=AddDerived* "}")?
		public Group getGroup_5() { return cGroup_5; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_5_0() { return cLeftCurlyBracketKeyword_5_0; }

		//featureModification+=StructuralFeatureModification*
		public Assignment getFeatureModificationAssignment_5_1() { return cFeatureModificationAssignment_5_1; }

		//StructuralFeatureModification
		public RuleCall getFeatureModificationStructuralFeatureModificationParserRuleCall_5_1_0() { return cFeatureModificationStructuralFeatureModificationParserRuleCall_5_1_0; }

		//addFeatures+=AddFeature*
		public Assignment getAddFeaturesAssignment_5_2() { return cAddFeaturesAssignment_5_2; }

		//AddFeature
		public RuleCall getAddFeaturesAddFeatureParserRuleCall_5_2_0() { return cAddFeaturesAddFeatureParserRuleCall_5_2_0; }

		//addDeriveds+=AddDerived*
		public Assignment getAddDerivedsAssignment_5_3() { return cAddDerivedsAssignment_5_3; }

		//AddDerived
		public RuleCall getAddDerivedsAddDerivedParserRuleCall_5_3_0() { return cAddDerivedsAddDerivedParserRuleCall_5_3_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_5_4() { return cRightCurlyBracketKeyword_5_4; }

		//("annotation" "{" annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)*
		//"}")?
		public Group getGroup_6() { return cGroup_6; }

		//"annotation"
		public Keyword getAnnotationKeyword_6_0() { return cAnnotationKeyword_6_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_6_2() { return cAnnotationModificationAssignment_6_2; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_6_2_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_6_2_0; }

		//(";" annotationModification+=AnnotationModification)*
		public Group getGroup_6_3() { return cGroup_6_3; }

		//";"
		public Keyword getSemicolonKeyword_6_3_0() { return cSemicolonKeyword_6_3_0; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_6_3_1() { return cAnnotationModificationAssignment_6_3_1; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_6_3_1_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_6_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
	}

	public class DataTypeModificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DataTypeModification");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cRemoveAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Keyword cRemoveRemoveKeyword_0_0 = (Keyword)cRemoveAssignment_0.eContents().get(0);
		private final Assignment cOldNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOldNameEStringParserRuleCall_1_0 = (RuleCall)cOldNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cToKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cNewNameAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cNewNameEStringParserRuleCall_2_1_0 = (RuleCall)cNewNameAssignment_2_1.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cOldInstanceTypeKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cOldInstanceTypeNameAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cOldInstanceTypeNameEStringParserRuleCall_3_1_0 = (RuleCall)cOldInstanceTypeNameAssignment_3_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cNewInstanceTypeKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cNewInstanceTypeNameAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cNewInstanceTypeNameEStringParserRuleCall_4_1_0 = (RuleCall)cNewInstanceTypeNameAssignment_4_1.eContents().get(0);
		private final Assignment cRemoveEAnnotationsAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final Keyword cRemoveEAnnotationsRemoveEAnnotationsKeyword_5_0 = (Keyword)cRemoveEAnnotationsAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cAnnotationKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cAnnotationModificationAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_6_2_0 = (RuleCall)cAnnotationModificationAssignment_6_2.eContents().get(0);
		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
		private final Keyword cSemicolonKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
		private final Assignment cAnnotationModificationAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_6_3_1_0 = (RuleCall)cAnnotationModificationAssignment_6_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
		
		//DataTypeModification:
		//	remove?="remove"? oldName=EString ("to" newName=EString)? ("oldInstanceType" oldInstanceTypeName=EString)?
		//	("newInstanceType" newInstanceTypeName=EString)? removeEAnnotations?="removeEAnnotations"? ("annotation" "{"
		//	annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?;
		public ParserRule getRule() { return rule; }

		//remove?="remove"? oldName=EString ("to" newName=EString)? ("oldInstanceType" oldInstanceTypeName=EString)?
		//("newInstanceType" newInstanceTypeName=EString)? removeEAnnotations?="removeEAnnotations"? ("annotation" "{"
		//annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?
		public Group getGroup() { return cGroup; }

		//remove?="remove"?
		public Assignment getRemoveAssignment_0() { return cRemoveAssignment_0; }

		//"remove"
		public Keyword getRemoveRemoveKeyword_0_0() { return cRemoveRemoveKeyword_0_0; }

		//oldName=EString
		public Assignment getOldNameAssignment_1() { return cOldNameAssignment_1; }

		//EString
		public RuleCall getOldNameEStringParserRuleCall_1_0() { return cOldNameEStringParserRuleCall_1_0; }

		//("to" newName=EString)?
		public Group getGroup_2() { return cGroup_2; }

		//"to"
		public Keyword getToKeyword_2_0() { return cToKeyword_2_0; }

		//newName=EString
		public Assignment getNewNameAssignment_2_1() { return cNewNameAssignment_2_1; }

		//EString
		public RuleCall getNewNameEStringParserRuleCall_2_1_0() { return cNewNameEStringParserRuleCall_2_1_0; }

		//("oldInstanceType" oldInstanceTypeName=EString)?
		public Group getGroup_3() { return cGroup_3; }

		//"oldInstanceType"
		public Keyword getOldInstanceTypeKeyword_3_0() { return cOldInstanceTypeKeyword_3_0; }

		//oldInstanceTypeName=EString
		public Assignment getOldInstanceTypeNameAssignment_3_1() { return cOldInstanceTypeNameAssignment_3_1; }

		//EString
		public RuleCall getOldInstanceTypeNameEStringParserRuleCall_3_1_0() { return cOldInstanceTypeNameEStringParserRuleCall_3_1_0; }

		//("newInstanceType" newInstanceTypeName=EString)?
		public Group getGroup_4() { return cGroup_4; }

		//"newInstanceType"
		public Keyword getNewInstanceTypeKeyword_4_0() { return cNewInstanceTypeKeyword_4_0; }

		//newInstanceTypeName=EString
		public Assignment getNewInstanceTypeNameAssignment_4_1() { return cNewInstanceTypeNameAssignment_4_1; }

		//EString
		public RuleCall getNewInstanceTypeNameEStringParserRuleCall_4_1_0() { return cNewInstanceTypeNameEStringParserRuleCall_4_1_0; }

		//removeEAnnotations?="removeEAnnotations"?
		public Assignment getRemoveEAnnotationsAssignment_5() { return cRemoveEAnnotationsAssignment_5; }

		//"removeEAnnotations"
		public Keyword getRemoveEAnnotationsRemoveEAnnotationsKeyword_5_0() { return cRemoveEAnnotationsRemoveEAnnotationsKeyword_5_0; }

		//("annotation" "{" annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)*
		//"}")?
		public Group getGroup_6() { return cGroup_6; }

		//"annotation"
		public Keyword getAnnotationKeyword_6_0() { return cAnnotationKeyword_6_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_6_2() { return cAnnotationModificationAssignment_6_2; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_6_2_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_6_2_0; }

		//(";" annotationModification+=AnnotationModification)*
		public Group getGroup_6_3() { return cGroup_6_3; }

		//";"
		public Keyword getSemicolonKeyword_6_3_0() { return cSemicolonKeyword_6_3_0; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_6_3_1() { return cAnnotationModificationAssignment_6_3_1; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_6_3_1_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_6_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
	}

	public class EnumModificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EnumModification");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cRemoveAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Keyword cRemoveRemoveKeyword_0_0 = (Keyword)cRemoveAssignment_0.eContents().get(0);
		private final Assignment cReifyAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final Keyword cReifyReifyKeyword_1_0 = (Keyword)cReifyAssignment_1.eContents().get(0);
		private final Assignment cOldNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cOldNameEStringParserRuleCall_2_0 = (RuleCall)cOldNameAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cToKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cNewNameAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cNewNameEStringParserRuleCall_3_1_0 = (RuleCall)cNewNameAssignment_3_1.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cOldInstanceTypeKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOldInstanceTypeNameAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOldInstanceTypeNameEStringParserRuleCall_4_1_0 = (RuleCall)cOldInstanceTypeNameAssignment_4_1.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cNewInstanceTypeKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cNewInstanceTypeNameAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cNewInstanceTypeNameEStringParserRuleCall_5_1_0 = (RuleCall)cNewInstanceTypeNameAssignment_5_1.eContents().get(0);
		private final Assignment cRemoveEAnnotationsAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final Keyword cRemoveEAnnotationsRemoveEAnnotationsKeyword_6_0 = (Keyword)cRemoveEAnnotationsAssignment_6.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cLeftCurlyBracketKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Assignment cEnumLiteralModificationAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1);
		private final RuleCall cEnumLiteralModificationEnumLiteralModificationParserRuleCall_7_1_0 = (RuleCall)cEnumLiteralModificationAssignment_7_1.eContents().get(0);
		private final Group cGroup_7_2 = (Group)cGroup_7.eContents().get(2);
		private final Keyword cSemicolonKeyword_7_2_0 = (Keyword)cGroup_7_2.eContents().get(0);
		private final Assignment cEnumLiteralModificationAssignment_7_2_1 = (Assignment)cGroup_7_2.eContents().get(1);
		private final RuleCall cEnumLiteralModificationEnumLiteralModificationParserRuleCall_7_2_1_0 = (RuleCall)cEnumLiteralModificationAssignment_7_2_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7_3 = (Keyword)cGroup_7.eContents().get(3);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cAnnotationKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cAnnotationModificationAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_8_2_0 = (RuleCall)cAnnotationModificationAssignment_8_2.eContents().get(0);
		private final Group cGroup_8_3 = (Group)cGroup_8.eContents().get(3);
		private final Keyword cSemicolonKeyword_8_3_0 = (Keyword)cGroup_8_3.eContents().get(0);
		private final Assignment cAnnotationModificationAssignment_8_3_1 = (Assignment)cGroup_8_3.eContents().get(1);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_8_3_1_0 = (RuleCall)cAnnotationModificationAssignment_8_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_8_4 = (Keyword)cGroup_8.eContents().get(4);
		
		//EnumModification:
		//	remove?="remove"? reify?="reify"? oldName=EString ("to" newName=EString)? ("oldInstanceType"
		//	oldInstanceTypeName=EString)? ("newInstanceType" newInstanceTypeName=EString)?
		//	removeEAnnotations?="removeEAnnotations"? ("{" enumLiteralModification+=EnumLiteralModification (";"
		//	enumLiteralModification+=EnumLiteralModification)* "}")? ("annotation" "{"
		//	annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?;
		public ParserRule getRule() { return rule; }

		//remove?="remove"? reify?="reify"? oldName=EString ("to" newName=EString)? ("oldInstanceType"
		//oldInstanceTypeName=EString)? ("newInstanceType" newInstanceTypeName=EString)?
		//removeEAnnotations?="removeEAnnotations"? ("{" enumLiteralModification+=EnumLiteralModification (";"
		//enumLiteralModification+=EnumLiteralModification)* "}")? ("annotation" "{"
		//annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?
		public Group getGroup() { return cGroup; }

		//remove?="remove"?
		public Assignment getRemoveAssignment_0() { return cRemoveAssignment_0; }

		//"remove"
		public Keyword getRemoveRemoveKeyword_0_0() { return cRemoveRemoveKeyword_0_0; }

		//reify?="reify"?
		public Assignment getReifyAssignment_1() { return cReifyAssignment_1; }

		//"reify"
		public Keyword getReifyReifyKeyword_1_0() { return cReifyReifyKeyword_1_0; }

		//oldName=EString
		public Assignment getOldNameAssignment_2() { return cOldNameAssignment_2; }

		//EString
		public RuleCall getOldNameEStringParserRuleCall_2_0() { return cOldNameEStringParserRuleCall_2_0; }

		//("to" newName=EString)?
		public Group getGroup_3() { return cGroup_3; }

		//"to"
		public Keyword getToKeyword_3_0() { return cToKeyword_3_0; }

		//newName=EString
		public Assignment getNewNameAssignment_3_1() { return cNewNameAssignment_3_1; }

		//EString
		public RuleCall getNewNameEStringParserRuleCall_3_1_0() { return cNewNameEStringParserRuleCall_3_1_0; }

		//("oldInstanceType" oldInstanceTypeName=EString)?
		public Group getGroup_4() { return cGroup_4; }

		//"oldInstanceType"
		public Keyword getOldInstanceTypeKeyword_4_0() { return cOldInstanceTypeKeyword_4_0; }

		//oldInstanceTypeName=EString
		public Assignment getOldInstanceTypeNameAssignment_4_1() { return cOldInstanceTypeNameAssignment_4_1; }

		//EString
		public RuleCall getOldInstanceTypeNameEStringParserRuleCall_4_1_0() { return cOldInstanceTypeNameEStringParserRuleCall_4_1_0; }

		//("newInstanceType" newInstanceTypeName=EString)?
		public Group getGroup_5() { return cGroup_5; }

		//"newInstanceType"
		public Keyword getNewInstanceTypeKeyword_5_0() { return cNewInstanceTypeKeyword_5_0; }

		//newInstanceTypeName=EString
		public Assignment getNewInstanceTypeNameAssignment_5_1() { return cNewInstanceTypeNameAssignment_5_1; }

		//EString
		public RuleCall getNewInstanceTypeNameEStringParserRuleCall_5_1_0() { return cNewInstanceTypeNameEStringParserRuleCall_5_1_0; }

		//removeEAnnotations?="removeEAnnotations"?
		public Assignment getRemoveEAnnotationsAssignment_6() { return cRemoveEAnnotationsAssignment_6; }

		//"removeEAnnotations"
		public Keyword getRemoveEAnnotationsRemoveEAnnotationsKeyword_6_0() { return cRemoveEAnnotationsRemoveEAnnotationsKeyword_6_0; }

		//("{" enumLiteralModification+=EnumLiteralModification (";" enumLiteralModification+=EnumLiteralModification)* "}")?
		public Group getGroup_7() { return cGroup_7; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_7_0() { return cLeftCurlyBracketKeyword_7_0; }

		//enumLiteralModification+=EnumLiteralModification
		public Assignment getEnumLiteralModificationAssignment_7_1() { return cEnumLiteralModificationAssignment_7_1; }

		//EnumLiteralModification
		public RuleCall getEnumLiteralModificationEnumLiteralModificationParserRuleCall_7_1_0() { return cEnumLiteralModificationEnumLiteralModificationParserRuleCall_7_1_0; }

		//(";" enumLiteralModification+=EnumLiteralModification)*
		public Group getGroup_7_2() { return cGroup_7_2; }

		//";"
		public Keyword getSemicolonKeyword_7_2_0() { return cSemicolonKeyword_7_2_0; }

		//enumLiteralModification+=EnumLiteralModification
		public Assignment getEnumLiteralModificationAssignment_7_2_1() { return cEnumLiteralModificationAssignment_7_2_1; }

		//EnumLiteralModification
		public RuleCall getEnumLiteralModificationEnumLiteralModificationParserRuleCall_7_2_1_0() { return cEnumLiteralModificationEnumLiteralModificationParserRuleCall_7_2_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_7_3() { return cRightCurlyBracketKeyword_7_3; }

		//("annotation" "{" annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)*
		//"}")?
		public Group getGroup_8() { return cGroup_8; }

		//"annotation"
		public Keyword getAnnotationKeyword_8_0() { return cAnnotationKeyword_8_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_8_1() { return cLeftCurlyBracketKeyword_8_1; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_8_2() { return cAnnotationModificationAssignment_8_2; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_8_2_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_8_2_0; }

		//(";" annotationModification+=AnnotationModification)*
		public Group getGroup_8_3() { return cGroup_8_3; }

		//";"
		public Keyword getSemicolonKeyword_8_3_0() { return cSemicolonKeyword_8_3_0; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_8_3_1() { return cAnnotationModificationAssignment_8_3_1; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_8_3_1_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_8_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_8_4() { return cRightCurlyBracketKeyword_8_4; }
	}

	public class EnumLiteralModificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EnumLiteralModification");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cRemoveAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Keyword cRemoveRemoveKeyword_0_0 = (Keyword)cRemoveAssignment_0.eContents().get(0);
		private final Assignment cOldNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOldNameEStringParserRuleCall_1_0 = (RuleCall)cOldNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cToKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cNewNameAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cNewNameEStringParserRuleCall_2_1_0 = (RuleCall)cNewNameAssignment_2_1.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cOldLiteralKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cOldLiteralAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cOldLiteralEStringParserRuleCall_3_1_0 = (RuleCall)cOldLiteralAssignment_3_1.eContents().get(0);
		private final Keyword cToKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
		private final Assignment cNewLiteralAssignment_3_3 = (Assignment)cGroup_3.eContents().get(3);
		private final RuleCall cNewLiteralEStringParserRuleCall_3_3_0 = (RuleCall)cNewLiteralAssignment_3_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cOldValueKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cOldValueAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cOldValueEIntParserRuleCall_4_1_0 = (RuleCall)cOldValueAssignment_4_1.eContents().get(0);
		private final Keyword cToKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Assignment cNewValueAssignment_4_3 = (Assignment)cGroup_4.eContents().get(3);
		private final RuleCall cNewValueEIntParserRuleCall_4_3_0 = (RuleCall)cNewValueAssignment_4_3.eContents().get(0);
		private final Assignment cRemoveEAnnotationsAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final Keyword cRemoveEAnnotationsRemoveEAnnotationsKeyword_5_0 = (Keyword)cRemoveEAnnotationsAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cAnnotationKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cAnnotationModificationAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_6_2_0 = (RuleCall)cAnnotationModificationAssignment_6_2.eContents().get(0);
		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
		private final Keyword cSemicolonKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
		private final Assignment cAnnotationModificationAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_6_3_1_0 = (RuleCall)cAnnotationModificationAssignment_6_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
		
		//EnumLiteralModification:
		//	remove?="remove"? oldName=EString ("to" newName=EString)? ("oldLiteral" oldLiteral=EString "to" newLiteral=EString)?
		//	("oldValue" oldValue=EInt "to" newValue=EInt)? removeEAnnotations?="removeEAnnotations"? ("annotation" "{"
		//	annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?;
		public ParserRule getRule() { return rule; }

		//remove?="remove"? oldName=EString ("to" newName=EString)? ("oldLiteral" oldLiteral=EString "to" newLiteral=EString)?
		//("oldValue" oldValue=EInt "to" newValue=EInt)? removeEAnnotations?="removeEAnnotations"? ("annotation" "{"
		//annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?
		public Group getGroup() { return cGroup; }

		//remove?="remove"?
		public Assignment getRemoveAssignment_0() { return cRemoveAssignment_0; }

		//"remove"
		public Keyword getRemoveRemoveKeyword_0_0() { return cRemoveRemoveKeyword_0_0; }

		//oldName=EString
		public Assignment getOldNameAssignment_1() { return cOldNameAssignment_1; }

		//EString
		public RuleCall getOldNameEStringParserRuleCall_1_0() { return cOldNameEStringParserRuleCall_1_0; }

		//("to" newName=EString)?
		public Group getGroup_2() { return cGroup_2; }

		//"to"
		public Keyword getToKeyword_2_0() { return cToKeyword_2_0; }

		//newName=EString
		public Assignment getNewNameAssignment_2_1() { return cNewNameAssignment_2_1; }

		//EString
		public RuleCall getNewNameEStringParserRuleCall_2_1_0() { return cNewNameEStringParserRuleCall_2_1_0; }

		//("oldLiteral" oldLiteral=EString "to" newLiteral=EString)?
		public Group getGroup_3() { return cGroup_3; }

		//"oldLiteral"
		public Keyword getOldLiteralKeyword_3_0() { return cOldLiteralKeyword_3_0; }

		//oldLiteral=EString
		public Assignment getOldLiteralAssignment_3_1() { return cOldLiteralAssignment_3_1; }

		//EString
		public RuleCall getOldLiteralEStringParserRuleCall_3_1_0() { return cOldLiteralEStringParserRuleCall_3_1_0; }

		//"to"
		public Keyword getToKeyword_3_2() { return cToKeyword_3_2; }

		//newLiteral=EString
		public Assignment getNewLiteralAssignment_3_3() { return cNewLiteralAssignment_3_3; }

		//EString
		public RuleCall getNewLiteralEStringParserRuleCall_3_3_0() { return cNewLiteralEStringParserRuleCall_3_3_0; }

		//("oldValue" oldValue=EInt "to" newValue=EInt)?
		public Group getGroup_4() { return cGroup_4; }

		//"oldValue"
		public Keyword getOldValueKeyword_4_0() { return cOldValueKeyword_4_0; }

		//oldValue=EInt
		public Assignment getOldValueAssignment_4_1() { return cOldValueAssignment_4_1; }

		//EInt
		public RuleCall getOldValueEIntParserRuleCall_4_1_0() { return cOldValueEIntParserRuleCall_4_1_0; }

		//"to"
		public Keyword getToKeyword_4_2() { return cToKeyword_4_2; }

		//newValue=EInt
		public Assignment getNewValueAssignment_4_3() { return cNewValueAssignment_4_3; }

		//EInt
		public RuleCall getNewValueEIntParserRuleCall_4_3_0() { return cNewValueEIntParserRuleCall_4_3_0; }

		//removeEAnnotations?="removeEAnnotations"?
		public Assignment getRemoveEAnnotationsAssignment_5() { return cRemoveEAnnotationsAssignment_5; }

		//"removeEAnnotations"
		public Keyword getRemoveEAnnotationsRemoveEAnnotationsKeyword_5_0() { return cRemoveEAnnotationsRemoveEAnnotationsKeyword_5_0; }

		//("annotation" "{" annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)*
		//"}")?
		public Group getGroup_6() { return cGroup_6; }

		//"annotation"
		public Keyword getAnnotationKeyword_6_0() { return cAnnotationKeyword_6_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_6_2() { return cAnnotationModificationAssignment_6_2; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_6_2_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_6_2_0; }

		//(";" annotationModification+=AnnotationModification)*
		public Group getGroup_6_3() { return cGroup_6_3; }

		//";"
		public Keyword getSemicolonKeyword_6_3_0() { return cSemicolonKeyword_6_3_0; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_6_3_1() { return cAnnotationModificationAssignment_6_3_1; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_6_3_1_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_6_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
	}

	public class DetailsEntryModificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DetailsEntryModification");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cRemoveAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Keyword cRemoveRemoveKeyword_0_0 = (Keyword)cRemoveAssignment_0.eContents().get(0);
		private final Assignment cOldKeyAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOldKeyEStringParserRuleCall_1_0 = (RuleCall)cOldKeyAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cToKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cNewKeyAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cNewKeyEStringParserRuleCall_2_1_0 = (RuleCall)cNewKeyAssignment_2_1.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cOldValueKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cOldValueAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cOldValueEStringParserRuleCall_3_1_0 = (RuleCall)cOldValueAssignment_3_1.eContents().get(0);
		private final Keyword cToKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
		private final Assignment cNewValueAssignment_3_3 = (Assignment)cGroup_3.eContents().get(3);
		private final RuleCall cNewValueEStringParserRuleCall_3_3_0 = (RuleCall)cNewValueAssignment_3_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//DetailsEntryModification:
		//	remove?="remove"? oldKey=EString ("to" newKey=EString)? ("oldValue" oldValue=EString "to" newValue=EString)? "}";
		public ParserRule getRule() { return rule; }

		//remove?="remove"? oldKey=EString ("to" newKey=EString)? ("oldValue" oldValue=EString "to" newValue=EString)? "}"
		public Group getGroup() { return cGroup; }

		//remove?="remove"?
		public Assignment getRemoveAssignment_0() { return cRemoveAssignment_0; }

		//"remove"
		public Keyword getRemoveRemoveKeyword_0_0() { return cRemoveRemoveKeyword_0_0; }

		//oldKey=EString
		public Assignment getOldKeyAssignment_1() { return cOldKeyAssignment_1; }

		//EString
		public RuleCall getOldKeyEStringParserRuleCall_1_0() { return cOldKeyEStringParserRuleCall_1_0; }

		//("to" newKey=EString)?
		public Group getGroup_2() { return cGroup_2; }

		//"to"
		public Keyword getToKeyword_2_0() { return cToKeyword_2_0; }

		//newKey=EString
		public Assignment getNewKeyAssignment_2_1() { return cNewKeyAssignment_2_1; }

		//EString
		public RuleCall getNewKeyEStringParserRuleCall_2_1_0() { return cNewKeyEStringParserRuleCall_2_1_0; }

		//("oldValue" oldValue=EString "to" newValue=EString)?
		public Group getGroup_3() { return cGroup_3; }

		//"oldValue"
		public Keyword getOldValueKeyword_3_0() { return cOldValueKeyword_3_0; }

		//oldValue=EString
		public Assignment getOldValueAssignment_3_1() { return cOldValueAssignment_3_1; }

		//EString
		public RuleCall getOldValueEStringParserRuleCall_3_1_0() { return cOldValueEStringParserRuleCall_3_1_0; }

		//"to"
		public Keyword getToKeyword_3_2() { return cToKeyword_3_2; }

		//newValue=EString
		public Assignment getNewValueAssignment_3_3() { return cNewValueAssignment_3_3; }

		//EString
		public RuleCall getNewValueEStringParserRuleCall_3_3_0() { return cNewValueEStringParserRuleCall_3_3_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
	}

	public class AddFeatureElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AddFeature");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cAddAttributeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cAddReferenceParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//AddFeature:
		//	AddAttribute | AddReference;
		public ParserRule getRule() { return rule; }

		//AddAttribute | AddReference
		public Alternatives getAlternatives() { return cAlternatives; }

		//AddAttribute
		public RuleCall getAddAttributeParserRuleCall_0() { return cAddAttributeParserRuleCall_0; }

		//AddReference
		public RuleCall getAddReferenceParserRuleCall_1() { return cAddReferenceParserRuleCall_1; }
	}

	public class AddAttributeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AddAttribute");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAddAttributeKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameEStringParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cCommaKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cTypeAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cTypePrimitiveTypeParserRuleCall_4_0 = (RuleCall)cTypeAssignment_4.eContents().get(0);
		private final Keyword cCommaKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Assignment cLowerAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cLowerEIntParserRuleCall_6_0 = (RuleCall)cLowerAssignment_6.eContents().get(0);
		private final Keyword cCommaKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final Assignment cUpperAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cUpperEIntParserRuleCall_8_0 = (RuleCall)cUpperAssignment_8.eContents().get(0);
		private final Keyword cCommaKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final Assignment cDefaultValueAssignment_10 = (Assignment)cGroup.eContents().get(10);
		private final RuleCall cDefaultValueEStringParserRuleCall_10_0 = (RuleCall)cDefaultValueAssignment_10.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//AddAttribute:
		//	"addAttribute" "(" name=EString "," type=PrimitiveType "," lower=EInt "," upper=EInt "," defaultValue=EString ")";
		public ParserRule getRule() { return rule; }

		//"addAttribute" "(" name=EString "," type=PrimitiveType "," lower=EInt "," upper=EInt "," defaultValue=EString ")"
		public Group getGroup() { return cGroup; }

		//"addAttribute"
		public Keyword getAddAttributeKeyword_0() { return cAddAttributeKeyword_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }

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

		//EString
		public RuleCall getNameEStringParserRuleCall_2_0() { return cNameEStringParserRuleCall_2_0; }

		//","
		public Keyword getCommaKeyword_3() { return cCommaKeyword_3; }

		//type=PrimitiveType
		public Assignment getTypeAssignment_4() { return cTypeAssignment_4; }

		//PrimitiveType
		public RuleCall getTypePrimitiveTypeParserRuleCall_4_0() { return cTypePrimitiveTypeParserRuleCall_4_0; }

		//","
		public Keyword getCommaKeyword_5() { return cCommaKeyword_5; }

		//lower=EInt
		public Assignment getLowerAssignment_6() { return cLowerAssignment_6; }

		//EInt
		public RuleCall getLowerEIntParserRuleCall_6_0() { return cLowerEIntParserRuleCall_6_0; }

		//","
		public Keyword getCommaKeyword_7() { return cCommaKeyword_7; }

		//upper=EInt
		public Assignment getUpperAssignment_8() { return cUpperAssignment_8; }

		//EInt
		public RuleCall getUpperEIntParserRuleCall_8_0() { return cUpperEIntParserRuleCall_8_0; }

		//","
		public Keyword getCommaKeyword_9() { return cCommaKeyword_9; }

		//defaultValue=EString
		public Assignment getDefaultValueAssignment_10() { return cDefaultValueAssignment_10; }

		//EString
		public RuleCall getDefaultValueEStringParserRuleCall_10_0() { return cDefaultValueEStringParserRuleCall_10_0; }

		//")"
		public Keyword getRightParenthesisKeyword_11() { return cRightParenthesisKeyword_11; }
	}

	public class AddReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AddReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAddReferenceKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameEStringParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cCommaKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cTypeAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cTypeEStringParserRuleCall_4_0 = (RuleCall)cTypeAssignment_4.eContents().get(0);
		private final Keyword cCommaKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Assignment cLowerAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cLowerEIntParserRuleCall_6_0 = (RuleCall)cLowerAssignment_6.eContents().get(0);
		private final Keyword cCommaKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final Assignment cUpperAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cUpperEIntParserRuleCall_8_0 = (RuleCall)cUpperAssignment_8.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_9 = (Keyword)cGroup.eContents().get(9);
		
		//AddReference:
		//	"addReference" "(" name=EString "," type=EString "," lower=EInt "," upper=EInt ")";
		public ParserRule getRule() { return rule; }

		//"addReference" "(" name=EString "," type=EString "," lower=EInt "," upper=EInt ")"
		public Group getGroup() { return cGroup; }

		//"addReference"
		public Keyword getAddReferenceKeyword_0() { return cAddReferenceKeyword_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }

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

		//EString
		public RuleCall getNameEStringParserRuleCall_2_0() { return cNameEStringParserRuleCall_2_0; }

		//","
		public Keyword getCommaKeyword_3() { return cCommaKeyword_3; }

		//type=EString
		public Assignment getTypeAssignment_4() { return cTypeAssignment_4; }

		//EString
		public RuleCall getTypeEStringParserRuleCall_4_0() { return cTypeEStringParserRuleCall_4_0; }

		//","
		public Keyword getCommaKeyword_5() { return cCommaKeyword_5; }

		//lower=EInt
		public Assignment getLowerAssignment_6() { return cLowerAssignment_6; }

		//EInt
		public RuleCall getLowerEIntParserRuleCall_6_0() { return cLowerEIntParserRuleCall_6_0; }

		//","
		public Keyword getCommaKeyword_7() { return cCommaKeyword_7; }

		//upper=EInt
		public Assignment getUpperAssignment_8() { return cUpperAssignment_8; }

		//EInt
		public RuleCall getUpperEIntParserRuleCall_8_0() { return cUpperEIntParserRuleCall_8_0; }

		//")"
		public Keyword getRightParenthesisKeyword_9() { return cRightParenthesisKeyword_9; }
	}

	public class StructuralFeatureModificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StructuralFeatureModification");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cAttributeModificationParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cReferenceModificationParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//StructuralFeatureModification:
		//	AttributeModification | ReferenceModification;
		public ParserRule getRule() { return rule; }

		//AttributeModification | ReferenceModification
		public Alternatives getAlternatives() { return cAlternatives; }

		//AttributeModification
		public RuleCall getAttributeModificationParserRuleCall_0() { return cAttributeModificationParserRuleCall_0; }

		//ReferenceModification
		public RuleCall getReferenceModificationParserRuleCall_1() { return cReferenceModificationParserRuleCall_1; }
	}

	public class ChangeBoundsElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChangeBounds");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cChangeBoundsAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cBoundsKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cOldLowerAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cOldLowerEIntParserRuleCall_3_0 = (RuleCall)cOldLowerAssignment_3.eContents().get(0);
		private final Keyword cCommaKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cOldUpperAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cOldUpperEIntParserRuleCall_5_0 = (RuleCall)cOldUpperAssignment_5.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Keyword cToKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final Keyword cLeftParenthesisKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final Assignment cNewLowerAssignment_9 = (Assignment)cGroup.eContents().get(9);
		private final RuleCall cNewLowerEIntParserRuleCall_9_0 = (RuleCall)cNewLowerAssignment_9.eContents().get(0);
		private final Keyword cCommaKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Assignment cNewUpperAssignment_11 = (Assignment)cGroup.eContents().get(11);
		private final RuleCall cNewUpperEIntParserRuleCall_11_0 = (RuleCall)cNewUpperAssignment_11.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_12 = (Keyword)cGroup.eContents().get(12);
		
		//ChangeBounds:
		//	{ChangeBounds} "bounds" "(" oldLower=EInt "," oldUpper=EInt ")" "to" "(" newLower=EInt "," newUpper=EInt ")";
		public ParserRule getRule() { return rule; }

		//{ChangeBounds} "bounds" "(" oldLower=EInt "," oldUpper=EInt ")" "to" "(" newLower=EInt "," newUpper=EInt ")"
		public Group getGroup() { return cGroup; }

		//{ChangeBounds}
		public Action getChangeBoundsAction_0() { return cChangeBoundsAction_0; }

		//"bounds"
		public Keyword getBoundsKeyword_1() { return cBoundsKeyword_1; }

		//"("
		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }

		//oldLower=EInt
		public Assignment getOldLowerAssignment_3() { return cOldLowerAssignment_3; }

		//EInt
		public RuleCall getOldLowerEIntParserRuleCall_3_0() { return cOldLowerEIntParserRuleCall_3_0; }

		//","
		public Keyword getCommaKeyword_4() { return cCommaKeyword_4; }

		//oldUpper=EInt
		public Assignment getOldUpperAssignment_5() { return cOldUpperAssignment_5; }

		//EInt
		public RuleCall getOldUpperEIntParserRuleCall_5_0() { return cOldUpperEIntParserRuleCall_5_0; }

		//")"
		public Keyword getRightParenthesisKeyword_6() { return cRightParenthesisKeyword_6; }

		//"to"
		public Keyword getToKeyword_7() { return cToKeyword_7; }

		//"("
		public Keyword getLeftParenthesisKeyword_8() { return cLeftParenthesisKeyword_8; }

		//newLower=EInt
		public Assignment getNewLowerAssignment_9() { return cNewLowerAssignment_9; }

		//EInt
		public RuleCall getNewLowerEIntParserRuleCall_9_0() { return cNewLowerEIntParserRuleCall_9_0; }

		//","
		public Keyword getCommaKeyword_10() { return cCommaKeyword_10; }

		//newUpper=EInt
		public Assignment getNewUpperAssignment_11() { return cNewUpperAssignment_11; }

		//EInt
		public RuleCall getNewUpperEIntParserRuleCall_11_0() { return cNewUpperEIntParserRuleCall_11_0; }

		//")"
		public Keyword getRightParenthesisKeyword_12() { return cRightParenthesisKeyword_12; }
	}

	public class AttributeModificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AttributeModification");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cRemoveAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Keyword cRemoveRemoveKeyword_0_0 = (Keyword)cRemoveAssignment_0.eContents().get(0);
		private final Keyword cAttKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cOldNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cOldNameEStringParserRuleCall_2_0 = (RuleCall)cOldNameAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cToKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cNewNameAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cNewNameEStringParserRuleCall_3_1_0 = (RuleCall)cNewNameAssignment_3_1.eContents().get(0);
		private final Assignment cChangeBoundsAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cChangeBoundsChangeBoundsParserRuleCall_4_0 = (RuleCall)cChangeBoundsAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Assignment cChangeTypeAssignment_5_0 = (Assignment)cGroup_5.eContents().get(0);
		private final Keyword cChangeTypeChangeTypeKeyword_5_0_0 = (Keyword)cChangeTypeAssignment_5_0.eContents().get(0);
		private final Keyword cToKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cNewTypeAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cNewTypePrimitiveTypeParserRuleCall_5_2_0 = (RuleCall)cNewTypeAssignment_5_2.eContents().get(0);
		private final Assignment cRemoveEAnnotationsAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final Keyword cRemoveEAnnotationsRemoveEAnnotationsKeyword_6_0 = (Keyword)cRemoveEAnnotationsAssignment_6.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cAnnotationKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cAnnotationModificationAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_7_2_0 = (RuleCall)cAnnotationModificationAssignment_7_2.eContents().get(0);
		private final Group cGroup_7_3 = (Group)cGroup_7.eContents().get(3);
		private final Keyword cSemicolonKeyword_7_3_0 = (Keyword)cGroup_7_3.eContents().get(0);
		private final Assignment cAnnotationModificationAssignment_7_3_1 = (Assignment)cGroup_7_3.eContents().get(1);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_7_3_1_0 = (RuleCall)cAnnotationModificationAssignment_7_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7_4 = (Keyword)cGroup_7.eContents().get(4);
		
		//AttributeModification:
		//	remove?="remove"? "att" oldName=EString ("to" newName=EString)? changeBounds=ChangeBounds? (changeType?="changeType"
		//	"to" newType=PrimitiveType)? removeEAnnotations?="removeEAnnotations"? ("annotation" "{"
		//	annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?;
		public ParserRule getRule() { return rule; }

		//remove?="remove"? "att" oldName=EString ("to" newName=EString)? changeBounds=ChangeBounds? (changeType?="changeType"
		//"to" newType=PrimitiveType)? removeEAnnotations?="removeEAnnotations"? ("annotation" "{"
		//annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?
		public Group getGroup() { return cGroup; }

		//remove?="remove"?
		public Assignment getRemoveAssignment_0() { return cRemoveAssignment_0; }

		//"remove"
		public Keyword getRemoveRemoveKeyword_0_0() { return cRemoveRemoveKeyword_0_0; }

		//"att"
		public Keyword getAttKeyword_1() { return cAttKeyword_1; }

		//oldName=EString
		public Assignment getOldNameAssignment_2() { return cOldNameAssignment_2; }

		//EString
		public RuleCall getOldNameEStringParserRuleCall_2_0() { return cOldNameEStringParserRuleCall_2_0; }

		//("to" newName=EString)?
		public Group getGroup_3() { return cGroup_3; }

		//"to"
		public Keyword getToKeyword_3_0() { return cToKeyword_3_0; }

		//newName=EString
		public Assignment getNewNameAssignment_3_1() { return cNewNameAssignment_3_1; }

		//EString
		public RuleCall getNewNameEStringParserRuleCall_3_1_0() { return cNewNameEStringParserRuleCall_3_1_0; }

		//changeBounds=ChangeBounds?
		public Assignment getChangeBoundsAssignment_4() { return cChangeBoundsAssignment_4; }

		//ChangeBounds
		public RuleCall getChangeBoundsChangeBoundsParserRuleCall_4_0() { return cChangeBoundsChangeBoundsParserRuleCall_4_0; }

		//(changeType?="changeType" "to" newType=PrimitiveType)?
		public Group getGroup_5() { return cGroup_5; }

		//changeType?="changeType"
		public Assignment getChangeTypeAssignment_5_0() { return cChangeTypeAssignment_5_0; }

		//"changeType"
		public Keyword getChangeTypeChangeTypeKeyword_5_0_0() { return cChangeTypeChangeTypeKeyword_5_0_0; }

		//"to"
		public Keyword getToKeyword_5_1() { return cToKeyword_5_1; }

		//newType=PrimitiveType
		public Assignment getNewTypeAssignment_5_2() { return cNewTypeAssignment_5_2; }

		//PrimitiveType
		public RuleCall getNewTypePrimitiveTypeParserRuleCall_5_2_0() { return cNewTypePrimitiveTypeParserRuleCall_5_2_0; }

		//removeEAnnotations?="removeEAnnotations"?
		public Assignment getRemoveEAnnotationsAssignment_6() { return cRemoveEAnnotationsAssignment_6; }

		//"removeEAnnotations"
		public Keyword getRemoveEAnnotationsRemoveEAnnotationsKeyword_6_0() { return cRemoveEAnnotationsRemoveEAnnotationsKeyword_6_0; }

		//("annotation" "{" annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)*
		//"}")?
		public Group getGroup_7() { return cGroup_7; }

		//"annotation"
		public Keyword getAnnotationKeyword_7_0() { return cAnnotationKeyword_7_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_7_1() { return cLeftCurlyBracketKeyword_7_1; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_7_2() { return cAnnotationModificationAssignment_7_2; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_7_2_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_7_2_0; }

		//(";" annotationModification+=AnnotationModification)*
		public Group getGroup_7_3() { return cGroup_7_3; }

		//";"
		public Keyword getSemicolonKeyword_7_3_0() { return cSemicolonKeyword_7_3_0; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_7_3_1() { return cAnnotationModificationAssignment_7_3_1; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_7_3_1_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_7_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_7_4() { return cRightCurlyBracketKeyword_7_4; }
	}

	public class ReferenceModificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ReferenceModification");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cRemoveAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Keyword cRemoveRemoveKeyword_0_0 = (Keyword)cRemoveAssignment_0.eContents().get(0);
		private final Keyword cRefKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cOldNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cOldNameEStringParserRuleCall_2_0 = (RuleCall)cOldNameAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cToKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cNewNameAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cNewNameEStringParserRuleCall_3_1_0 = (RuleCall)cNewNameAssignment_3_1.eContents().get(0);
		private final Assignment cChangeBoundsAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cChangeBoundsChangeBoundsParserRuleCall_4_0 = (RuleCall)cChangeBoundsAssignment_4.eContents().get(0);
		private final Assignment cChangeContainementAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final Keyword cChangeContainementChangeContainementKeyword_5_0 = (Keyword)cChangeContainementAssignment_5.eContents().get(0);
		private final Assignment cRemoveOppositeAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final Keyword cRemoveOppositeRemoveOppositeKeyword_6_0 = (Keyword)cRemoveOppositeAssignment_6.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cAddOppositeKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Assignment cAddOppositeAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1);
		private final RuleCall cAddOppositeAddOppositeParserRuleCall_7_1_0 = (RuleCall)cAddOppositeAssignment_7_1.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cReifyKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Assignment cReifyAssignment_8_1 = (Assignment)cGroup_8.eContents().get(1);
		private final RuleCall cReifyReferenceReificationParserRuleCall_8_1_0 = (RuleCall)cReifyAssignment_8_1.eContents().get(0);
		private final Assignment cRemoveEAnnotationsAssignment_9 = (Assignment)cGroup.eContents().get(9);
		private final Keyword cRemoveEAnnotationsRemoveEAnnotationsKeyword_9_0 = (Keyword)cRemoveEAnnotationsAssignment_9.eContents().get(0);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cAnnotationKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_10_1 = (Keyword)cGroup_10.eContents().get(1);
		private final Assignment cAnnotationModificationAssignment_10_2 = (Assignment)cGroup_10.eContents().get(2);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_10_2_0 = (RuleCall)cAnnotationModificationAssignment_10_2.eContents().get(0);
		private final Group cGroup_10_3 = (Group)cGroup_10.eContents().get(3);
		private final Keyword cSemicolonKeyword_10_3_0 = (Keyword)cGroup_10_3.eContents().get(0);
		private final Assignment cAnnotationModificationAssignment_10_3_1 = (Assignment)cGroup_10_3.eContents().get(1);
		private final RuleCall cAnnotationModificationAnnotationModificationParserRuleCall_10_3_1_0 = (RuleCall)cAnnotationModificationAssignment_10_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_10_4 = (Keyword)cGroup_10.eContents().get(4);
		
		//ReferenceModification:
		//	remove?="remove"? "ref" oldName=EString ("to" newName=EString)? changeBounds=ChangeBounds?
		//	changeContainement?="changeContainement"? removeOpposite?="removeOpposite"? ("addOpposite" addOpposite=AddOpposite)?
		//	("reify" reify=ReferenceReification)? removeEAnnotations?="removeEAnnotations"? ("annotation" "{"
		//	annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?;
		public ParserRule getRule() { return rule; }

		//remove?="remove"? "ref" oldName=EString ("to" newName=EString)? changeBounds=ChangeBounds?
		//changeContainement?="changeContainement"? removeOpposite?="removeOpposite"? ("addOpposite" addOpposite=AddOpposite)?
		//("reify" reify=ReferenceReification)? removeEAnnotations?="removeEAnnotations"? ("annotation" "{"
		//annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?
		public Group getGroup() { return cGroup; }

		//remove?="remove"?
		public Assignment getRemoveAssignment_0() { return cRemoveAssignment_0; }

		//"remove"
		public Keyword getRemoveRemoveKeyword_0_0() { return cRemoveRemoveKeyword_0_0; }

		//"ref"
		public Keyword getRefKeyword_1() { return cRefKeyword_1; }

		//oldName=EString
		public Assignment getOldNameAssignment_2() { return cOldNameAssignment_2; }

		//EString
		public RuleCall getOldNameEStringParserRuleCall_2_0() { return cOldNameEStringParserRuleCall_2_0; }

		//("to" newName=EString)?
		public Group getGroup_3() { return cGroup_3; }

		//"to"
		public Keyword getToKeyword_3_0() { return cToKeyword_3_0; }

		//newName=EString
		public Assignment getNewNameAssignment_3_1() { return cNewNameAssignment_3_1; }

		//EString
		public RuleCall getNewNameEStringParserRuleCall_3_1_0() { return cNewNameEStringParserRuleCall_3_1_0; }

		//changeBounds=ChangeBounds?
		public Assignment getChangeBoundsAssignment_4() { return cChangeBoundsAssignment_4; }

		//ChangeBounds
		public RuleCall getChangeBoundsChangeBoundsParserRuleCall_4_0() { return cChangeBoundsChangeBoundsParserRuleCall_4_0; }

		//changeContainement?="changeContainement"?
		public Assignment getChangeContainementAssignment_5() { return cChangeContainementAssignment_5; }

		//"changeContainement"
		public Keyword getChangeContainementChangeContainementKeyword_5_0() { return cChangeContainementChangeContainementKeyword_5_0; }

		//removeOpposite?="removeOpposite"?
		public Assignment getRemoveOppositeAssignment_6() { return cRemoveOppositeAssignment_6; }

		//"removeOpposite"
		public Keyword getRemoveOppositeRemoveOppositeKeyword_6_0() { return cRemoveOppositeRemoveOppositeKeyword_6_0; }

		//("addOpposite" addOpposite=AddOpposite)?
		public Group getGroup_7() { return cGroup_7; }

		//"addOpposite"
		public Keyword getAddOppositeKeyword_7_0() { return cAddOppositeKeyword_7_0; }

		//addOpposite=AddOpposite
		public Assignment getAddOppositeAssignment_7_1() { return cAddOppositeAssignment_7_1; }

		//AddOpposite
		public RuleCall getAddOppositeAddOppositeParserRuleCall_7_1_0() { return cAddOppositeAddOppositeParserRuleCall_7_1_0; }

		//("reify" reify=ReferenceReification)?
		public Group getGroup_8() { return cGroup_8; }

		//"reify"
		public Keyword getReifyKeyword_8_0() { return cReifyKeyword_8_0; }

		//reify=ReferenceReification
		public Assignment getReifyAssignment_8_1() { return cReifyAssignment_8_1; }

		//ReferenceReification
		public RuleCall getReifyReferenceReificationParserRuleCall_8_1_0() { return cReifyReferenceReificationParserRuleCall_8_1_0; }

		//removeEAnnotations?="removeEAnnotations"?
		public Assignment getRemoveEAnnotationsAssignment_9() { return cRemoveEAnnotationsAssignment_9; }

		//"removeEAnnotations"
		public Keyword getRemoveEAnnotationsRemoveEAnnotationsKeyword_9_0() { return cRemoveEAnnotationsRemoveEAnnotationsKeyword_9_0; }

		//("annotation" "{" annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)*
		//"}")?
		public Group getGroup_10() { return cGroup_10; }

		//"annotation"
		public Keyword getAnnotationKeyword_10_0() { return cAnnotationKeyword_10_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_10_1() { return cLeftCurlyBracketKeyword_10_1; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_10_2() { return cAnnotationModificationAssignment_10_2; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_10_2_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_10_2_0; }

		//(";" annotationModification+=AnnotationModification)*
		public Group getGroup_10_3() { return cGroup_10_3; }

		//";"
		public Keyword getSemicolonKeyword_10_3_0() { return cSemicolonKeyword_10_3_0; }

		//annotationModification+=AnnotationModification
		public Assignment getAnnotationModificationAssignment_10_3_1() { return cAnnotationModificationAssignment_10_3_1; }

		//AnnotationModification
		public RuleCall getAnnotationModificationAnnotationModificationParserRuleCall_10_3_1_0() { return cAnnotationModificationAnnotationModificationParserRuleCall_10_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_10_4() { return cRightCurlyBracketKeyword_10_4; }
	}

	public class PrimitiveTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PrimitiveType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cIntKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cStringKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Keyword cBooleanKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
		private final Keyword cCharKeyword_3 = (Keyword)cAlternatives.eContents().get(3);
		private final Keyword cFloatKeyword_4 = (Keyword)cAlternatives.eContents().get(4);
		
		//PrimitiveType:
		//	"int" | "string" | "boolean" | "char" | "float";
		public ParserRule getRule() { return rule; }

		//"int" | "string" | "boolean" | "char" | "float"
		public Alternatives getAlternatives() { return cAlternatives; }

		//"int"
		public Keyword getIntKeyword_0() { return cIntKeyword_0; }

		//"string"
		public Keyword getStringKeyword_1() { return cStringKeyword_1; }

		//"boolean"
		public Keyword getBooleanKeyword_2() { return cBooleanKeyword_2; }

		//"char"
		public Keyword getCharKeyword_3() { return cCharKeyword_3; }

		//"float"
		public Keyword getFloatKeyword_4() { return cFloatKeyword_4; }
	}

	public class AddOppositeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AddOpposite");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cOppositeNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cOppositeNameEStringParserRuleCall_1_0 = (RuleCall)cOppositeNameAssignment_1.eContents().get(0);
		private final Keyword cCommaKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cOppositeLowerAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cOppositeLowerEIntParserRuleCall_3_0 = (RuleCall)cOppositeLowerAssignment_3.eContents().get(0);
		private final Keyword cCommaKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cOppositeUpperAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cOppositeUpperEIntParserRuleCall_5_0 = (RuleCall)cOppositeUpperAssignment_5.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//AddOpposite:
		//	"(" oppositeName=EString "," oppositeLower=EInt "," oppositeUpper=EInt ")";
		public ParserRule getRule() { return rule; }

		//"(" oppositeName=EString "," oppositeLower=EInt "," oppositeUpper=EInt ")"
		public Group getGroup() { return cGroup; }

		//"("
		public Keyword getLeftParenthesisKeyword_0() { return cLeftParenthesisKeyword_0; }

		//oppositeName=EString
		public Assignment getOppositeNameAssignment_1() { return cOppositeNameAssignment_1; }

		//EString
		public RuleCall getOppositeNameEStringParserRuleCall_1_0() { return cOppositeNameEStringParserRuleCall_1_0; }

		//","
		public Keyword getCommaKeyword_2() { return cCommaKeyword_2; }

		//oppositeLower=EInt
		public Assignment getOppositeLowerAssignment_3() { return cOppositeLowerAssignment_3; }

		//EInt
		public RuleCall getOppositeLowerEIntParserRuleCall_3_0() { return cOppositeLowerEIntParserRuleCall_3_0; }

		//","
		public Keyword getCommaKeyword_4() { return cCommaKeyword_4; }

		//oppositeUpper=EInt
		public Assignment getOppositeUpperAssignment_5() { return cOppositeUpperAssignment_5; }

		//EInt
		public RuleCall getOppositeUpperEIntParserRuleCall_5_0() { return cOppositeUpperEIntParserRuleCall_5_0; }

		//")"
		public Keyword getRightParenthesisKeyword_6() { return cRightParenthesisKeyword_6; }
	}

	public class ReferenceReificationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ReferenceReification");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameClassAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameClassEStringParserRuleCall_1_0 = (RuleCall)cNameClassAssignment_1.eContents().get(0);
		private final Keyword cCommaKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cNameFirstReferenceAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cNameFirstReferenceEStringParserRuleCall_3_0 = (RuleCall)cNameFirstReferenceAssignment_3.eContents().get(0);
		private final Keyword cCommaKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cNameSecondReferenceAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cNameSecondReferenceEStringParserRuleCall_5_0 = (RuleCall)cNameSecondReferenceAssignment_5.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//ReferenceReification:
		//	"(" nameClass=EString "," nameFirstReference=EString "," nameSecondReference=EString ")";
		public ParserRule getRule() { return rule; }

		//"(" nameClass=EString "," nameFirstReference=EString "," nameSecondReference=EString ")"
		public Group getGroup() { return cGroup; }

		//"("
		public Keyword getLeftParenthesisKeyword_0() { return cLeftParenthesisKeyword_0; }

		//nameClass=EString
		public Assignment getNameClassAssignment_1() { return cNameClassAssignment_1; }

		//EString
		public RuleCall getNameClassEStringParserRuleCall_1_0() { return cNameClassEStringParserRuleCall_1_0; }

		//","
		public Keyword getCommaKeyword_2() { return cCommaKeyword_2; }

		//nameFirstReference=EString
		public Assignment getNameFirstReferenceAssignment_3() { return cNameFirstReferenceAssignment_3; }

		//EString
		public RuleCall getNameFirstReferenceEStringParserRuleCall_3_0() { return cNameFirstReferenceEStringParserRuleCall_3_0; }

		//","
		public Keyword getCommaKeyword_4() { return cCommaKeyword_4; }

		//nameSecondReference=EString
		public Assignment getNameSecondReferenceAssignment_5() { return cNameSecondReferenceAssignment_5; }

		//EString
		public RuleCall getNameSecondReferenceEStringParserRuleCall_5_0() { return cNameSecondReferenceEStringParserRuleCall_5_0; }

		//")"
		public Keyword getRightParenthesisKeyword_6() { return cRightParenthesisKeyword_6; }
	}

	public class AddDerivedReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AddDerivedReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAddDerivedRefKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNewNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNewNameEStringParserRuleCall_1_0 = (RuleCall)cNewNameAssignment_1.eContents().get(0);
		private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cReferenceNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cReferenceNameEStringParserRuleCall_3_0 = (RuleCall)cReferenceNameAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cCommaKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cReferenceNameAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cReferenceNameEStringParserRuleCall_4_1_0 = (RuleCall)cReferenceNameAssignment_4_1.eContents().get(0);
		
		//AddDerivedReference:
		//	"addDerivedRef" newName=EString ":" referenceName+=EString ("," referenceName+=EString)*;
		public ParserRule getRule() { return rule; }

		//"addDerivedRef" newName=EString ":" referenceName+=EString ("," referenceName+=EString)*
		public Group getGroup() { return cGroup; }

		//"addDerivedRef"
		public Keyword getAddDerivedRefKeyword_0() { return cAddDerivedRefKeyword_0; }

		//newName=EString
		public Assignment getNewNameAssignment_1() { return cNewNameAssignment_1; }

		//EString
		public RuleCall getNewNameEStringParserRuleCall_1_0() { return cNewNameEStringParserRuleCall_1_0; }

		//":"
		public Keyword getColonKeyword_2() { return cColonKeyword_2; }

		//referenceName+=EString
		public Assignment getReferenceNameAssignment_3() { return cReferenceNameAssignment_3; }

		//EString
		public RuleCall getReferenceNameEStringParserRuleCall_3_0() { return cReferenceNameEStringParserRuleCall_3_0; }

		//("," referenceName+=EString)*
		public Group getGroup_4() { return cGroup_4; }

		//","
		public Keyword getCommaKeyword_4_0() { return cCommaKeyword_4_0; }

		//referenceName+=EString
		public Assignment getReferenceNameAssignment_4_1() { return cReferenceNameAssignment_4_1; }

		//EString
		public RuleCall getReferenceNameEStringParserRuleCall_4_1_0() { return cReferenceNameEStringParserRuleCall_4_1_0; }
	}

	public class AddDerivedAttributeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AddDerivedAttribute");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAddDerivedAttKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNewNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNewNameEStringParserRuleCall_1_0 = (RuleCall)cNewNameAssignment_1.eContents().get(0);
		private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cReferenceNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cReferenceNameEStringParserRuleCall_3_0 = (RuleCall)cReferenceNameAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cCommaKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cReferenceNameAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cReferenceNameEStringParserRuleCall_4_1_0 = (RuleCall)cReferenceNameAssignment_4_1.eContents().get(0);
		private final Keyword cColonKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Assignment cAttributeNameAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cAttributeNameEStringParserRuleCall_6_0 = (RuleCall)cAttributeNameAssignment_6.eContents().get(0);
		
		//AddDerivedAttribute:
		//	"addDerivedAtt" newName=EString ":" referenceName+=EString ("," referenceName+=EString)* ":" attributeName=EString;
		public ParserRule getRule() { return rule; }

		//"addDerivedAtt" newName=EString ":" referenceName+=EString ("," referenceName+=EString)* ":" attributeName=EString
		public Group getGroup() { return cGroup; }

		//"addDerivedAtt"
		public Keyword getAddDerivedAttKeyword_0() { return cAddDerivedAttKeyword_0; }

		//newName=EString
		public Assignment getNewNameAssignment_1() { return cNewNameAssignment_1; }

		//EString
		public RuleCall getNewNameEStringParserRuleCall_1_0() { return cNewNameEStringParserRuleCall_1_0; }

		//":"
		public Keyword getColonKeyword_2() { return cColonKeyword_2; }

		//referenceName+=EString
		public Assignment getReferenceNameAssignment_3() { return cReferenceNameAssignment_3; }

		//EString
		public RuleCall getReferenceNameEStringParserRuleCall_3_0() { return cReferenceNameEStringParserRuleCall_3_0; }

		//("," referenceName+=EString)*
		public Group getGroup_4() { return cGroup_4; }

		//","
		public Keyword getCommaKeyword_4_0() { return cCommaKeyword_4_0; }

		//referenceName+=EString
		public Assignment getReferenceNameAssignment_4_1() { return cReferenceNameAssignment_4_1; }

		//EString
		public RuleCall getReferenceNameEStringParserRuleCall_4_1_0() { return cReferenceNameEStringParserRuleCall_4_1_0; }

		//":"
		public Keyword getColonKeyword_5() { return cColonKeyword_5; }

		//attributeName=EString
		public Assignment getAttributeNameAssignment_6() { return cAttributeNameAssignment_6; }

		//EString
		public RuleCall getAttributeNameEStringParserRuleCall_6_0() { return cAttributeNameEStringParserRuleCall_6_0; }
	}

	public class EnumerateElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Enumerate");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cEnumerateAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cEnumerateKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cEnumNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cEnumNameEStringParserRuleCall_3_0 = (RuleCall)cEnumNameAssignment_3.eContents().get(0);
		private final Keyword cCommaKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cAttributeNameAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cAttributeNameEStringParserRuleCall_5_0 = (RuleCall)cAttributeNameAssignment_5.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//Enumerate:
		//	{Enumerate} "enumerate" "(" enumName=EString "," attributeName=EString ")";
		public ParserRule getRule() { return rule; }

		//{Enumerate} "enumerate" "(" enumName=EString "," attributeName=EString ")"
		public Group getGroup() { return cGroup; }

		//{Enumerate}
		public Action getEnumerateAction_0() { return cEnumerateAction_0; }

		//"enumerate"
		public Keyword getEnumerateKeyword_1() { return cEnumerateKeyword_1; }

		//"("
		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }

		//enumName=EString
		public Assignment getEnumNameAssignment_3() { return cEnumNameAssignment_3; }

		//EString
		public RuleCall getEnumNameEStringParserRuleCall_3_0() { return cEnumNameEStringParserRuleCall_3_0; }

		//","
		public Keyword getCommaKeyword_4() { return cCommaKeyword_4; }

		//attributeName=EString
		public Assignment getAttributeNameAssignment_5() { return cAttributeNameAssignment_5; }

		//EString
		public RuleCall getAttributeNameEStringParserRuleCall_5_0() { return cAttributeNameEStringParserRuleCall_5_0; }

		//")"
		public Keyword getRightParenthesisKeyword_6() { return cRightParenthesisKeyword_6; }
	}

	public class EIntElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EInt");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		
		//EInt returns ecore::EInt:
		//	"-"? INT;
		public ParserRule getRule() { return rule; }

		//"-"? INT
		public Group getGroup() { return cGroup; }

		//"-"?
		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }

		//INT
		public RuleCall getINTTerminalRuleCall_1() { return cINTTerminalRuleCall_1; }
	}

	public class EBooleanElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EBoolean");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cTrueKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cFalseKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		
		//EBoolean returns ecore::EBoolean:
		//	"true" | "false";
		public ParserRule getRule() { return rule; }

		//"true" | "false"
		public Alternatives getAlternatives() { return cAlternatives; }

		//"true"
		public Keyword getTrueKeyword_0() { return cTrueKeyword_0; }

		//"false"
		public Keyword getFalseKeyword_1() { return cFalseKeyword_1; }
	}

	public class EStringElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EString");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cSTRINGTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cIDTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//EString returns ecore::EString:
		//	STRING | ID;
		public ParserRule getRule() { return rule; }

		//STRING | ID
		public Alternatives getAlternatives() { return cAlternatives; }

		//STRING
		public RuleCall getSTRINGTerminalRuleCall_0() { return cSTRINGTerminalRuleCall_0; }

		//ID
		public RuleCall getIDTerminalRuleCall_1() { return cIDTerminalRuleCall_1; }
	}
	
	
	private final ModificationsElements pModifications;
	private final AddDerivedElements pAddDerived;
	private final PackageModificationElements pPackageModification;
	private final AddRootClassElements pAddRootClass;
	private final AddNameClassElements pAddNameClass;
	private final AnnotationModificationElements pAnnotationModification;
	private final ClassModificationElements pClassModification;
	private final DataTypeModificationElements pDataTypeModification;
	private final EnumModificationElements pEnumModification;
	private final EnumLiteralModificationElements pEnumLiteralModification;
	private final DetailsEntryModificationElements pDetailsEntryModification;
	private final AddFeatureElements pAddFeature;
	private final AddAttributeElements pAddAttribute;
	private final AddReferenceElements pAddReference;
	private final StructuralFeatureModificationElements pStructuralFeatureModification;
	private final ChangeBoundsElements pChangeBounds;
	private final AttributeModificationElements pAttributeModification;
	private final ReferenceModificationElements pReferenceModification;
	private final PrimitiveTypeElements pPrimitiveType;
	private final AddOppositeElements pAddOpposite;
	private final ReferenceReificationElements pReferenceReification;
	private final AddDerivedReferenceElements pAddDerivedReference;
	private final AddDerivedAttributeElements pAddDerivedAttribute;
	private final EnumerateElements pEnumerate;
	private final EIntElements pEInt;
	private final EBooleanElements pEBoolean;
	private final EStringElements pEString;
	
	private final Grammar grammar;

	private final TerminalsGrammarAccess gaTerminals;

	@Inject
	public XModifGrammarAccess(GrammarProvider grammarProvider,
		TerminalsGrammarAccess gaTerminals) {
		this.grammar = internalFindGrammar(grammarProvider);
		this.gaTerminals = gaTerminals;
		this.pModifications = new ModificationsElements();
		this.pAddDerived = new AddDerivedElements();
		this.pPackageModification = new PackageModificationElements();
		this.pAddRootClass = new AddRootClassElements();
		this.pAddNameClass = new AddNameClassElements();
		this.pAnnotationModification = new AnnotationModificationElements();
		this.pClassModification = new ClassModificationElements();
		this.pDataTypeModification = new DataTypeModificationElements();
		this.pEnumModification = new EnumModificationElements();
		this.pEnumLiteralModification = new EnumLiteralModificationElements();
		this.pDetailsEntryModification = new DetailsEntryModificationElements();
		this.pAddFeature = new AddFeatureElements();
		this.pAddAttribute = new AddAttributeElements();
		this.pAddReference = new AddReferenceElements();
		this.pStructuralFeatureModification = new StructuralFeatureModificationElements();
		this.pChangeBounds = new ChangeBoundsElements();
		this.pAttributeModification = new AttributeModificationElements();
		this.pReferenceModification = new ReferenceModificationElements();
		this.pPrimitiveType = new PrimitiveTypeElements();
		this.pAddOpposite = new AddOppositeElements();
		this.pReferenceReification = new ReferenceReificationElements();
		this.pAddDerivedReference = new AddDerivedReferenceElements();
		this.pAddDerivedAttribute = new AddDerivedAttributeElements();
		this.pEnumerate = new EnumerateElements();
		this.pEInt = new EIntElements();
		this.pEBoolean = new EBooleanElements();
		this.pEString = new EStringElements();
	}
	
	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
		Grammar grammar = grammarProvider.getGrammar(this);
		while (grammar != null) {
			if ("xtext.XModif".equals(grammar.getName())) {
				return grammar;
			}
			List<Grammar> grammars = grammar.getUsedGrammars();
			if (!grammars.isEmpty()) {
				grammar = grammars.iterator().next();
			} else {
				return null;
			}
		}
		return grammar;
	}
	
	
	public Grammar getGrammar() {
		return grammar;
	}
	

	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
		return gaTerminals;
	}

	
	//Modifications:
	//	(removeAllAnnotations?="removeAllAnnotations"? & removeAllOperations?="removeAllOperations"? &
	//	removeAllEStringAttributes?="removeAllEStringAttributes"? & removeAllOpposites?="removeAllOpposites"? &
	//	addAllOpposite?="addAllOpposite"? & ("addRootClass" addRootClass=AddRootClass)? & ("addNameClass"
	//	addNameClass=AddNameClass)?) //	{Modifications}	
	//	"root" rootPackageModification=PackageModification;
	public ModificationsElements getModificationsAccess() {
		return pModifications;
	}
	
	public ParserRule getModificationsRule() {
		return getModificationsAccess().getRule();
	}

	//AddDerived:
	//	AddDerivedReference | AddDerivedAttribute;
	public AddDerivedElements getAddDerivedAccess() {
		return pAddDerived;
	}
	
	public ParserRule getAddDerivedRule() {
		return getAddDerivedAccess().getRule();
	}

	//PackageModification:
	//	remove?="remove"? hide?="hide"? oldName=EString ("to" newName=EString)? ("Prefix" oldPrefixName=EString? "to"
	//	newPrefixName=EString)? ("URI" oldURIName=EString? "to" newURIName=EString)?
	//	removeEAnnotations?="removeEAnnotations"? ("package" "{" packageModification+=PackageModification (";"
	//	packageModification+=PackageModification)* "}")? ("class" "{" classModification+=ClassModification (";"
	//	classModification+=ClassModification)* "}")? ("dataType" "{" dataTypeModification+=DataTypeModification (";"
	//	dataTypeModification+=DataTypeModification)* "}")? ("enumModification" "{" enumModification+=EnumModification (";"
	//	enumModification+=EnumModification)* "}")? ("annotation" "{" annotationModification+=AnnotationModification (";"
	//	annotationModification+=AnnotationModification)* "}")?;
	public PackageModificationElements getPackageModificationAccess() {
		return pPackageModification;
	}
	
	public ParserRule getPackageModificationRule() {
		return getPackageModificationAccess().getRule();
	}

	//AddRootClass:
	//	{AddRootClass} name=EString;
	public AddRootClassElements getAddRootClassAccess() {
		return pAddRootClass;
	}
	
	public ParserRule getAddRootClassRule() {
		return getAddRootClassAccess().getRule();
	}

	//AddNameClass:
	//	name=EString "(" nameName=EString ")";
	public AddNameClassElements getAddNameClassAccess() {
		return pAddNameClass;
	}
	
	public ParserRule getAddNameClassRule() {
		return getAddNameClassAccess().getRule();
	}

	//AnnotationModification:
	//	remove?="remove"? oldSource=EString ("to" newSource=EString)? removeEAnnotations?="removeEAnnotations"?
	//	("detailsEntry" "{" detailsEntryModification+=DetailsEntryModification (";"
	//	detailsEntryModification+=DetailsEntryModification)* "}")? ("annotation" "{"
	//	annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?;
	public AnnotationModificationElements getAnnotationModificationAccess() {
		return pAnnotationModification;
	}
	
	public ParserRule getAnnotationModificationRule() {
		return getAnnotationModificationAccess().getRule();
	}

	//ClassModification:
	//	remove?="remove"? (hide?="hide"? & flatten?="flatten"? & flattenAll?="flattenAll"?) oldName=EString ("to"
	//	newName=EString)? (changeAbstract?="changeAbstract"? & removeEAnnotations?="removeEAnnotations"? &
	//	enumerate=Enumerate?) ("{" featureModification+=StructuralFeatureModification* addFeatures+=AddFeature*
	//	addDeriveds+=AddDerived* "}")? ("annotation" "{" annotationModification+=AnnotationModification (";"
	//	annotationModification+=AnnotationModification)* "}")?;
	public ClassModificationElements getClassModificationAccess() {
		return pClassModification;
	}
	
	public ParserRule getClassModificationRule() {
		return getClassModificationAccess().getRule();
	}

	//DataTypeModification:
	//	remove?="remove"? oldName=EString ("to" newName=EString)? ("oldInstanceType" oldInstanceTypeName=EString)?
	//	("newInstanceType" newInstanceTypeName=EString)? removeEAnnotations?="removeEAnnotations"? ("annotation" "{"
	//	annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?;
	public DataTypeModificationElements getDataTypeModificationAccess() {
		return pDataTypeModification;
	}
	
	public ParserRule getDataTypeModificationRule() {
		return getDataTypeModificationAccess().getRule();
	}

	//EnumModification:
	//	remove?="remove"? reify?="reify"? oldName=EString ("to" newName=EString)? ("oldInstanceType"
	//	oldInstanceTypeName=EString)? ("newInstanceType" newInstanceTypeName=EString)?
	//	removeEAnnotations?="removeEAnnotations"? ("{" enumLiteralModification+=EnumLiteralModification (";"
	//	enumLiteralModification+=EnumLiteralModification)* "}")? ("annotation" "{"
	//	annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?;
	public EnumModificationElements getEnumModificationAccess() {
		return pEnumModification;
	}
	
	public ParserRule getEnumModificationRule() {
		return getEnumModificationAccess().getRule();
	}

	//EnumLiteralModification:
	//	remove?="remove"? oldName=EString ("to" newName=EString)? ("oldLiteral" oldLiteral=EString "to" newLiteral=EString)?
	//	("oldValue" oldValue=EInt "to" newValue=EInt)? removeEAnnotations?="removeEAnnotations"? ("annotation" "{"
	//	annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?;
	public EnumLiteralModificationElements getEnumLiteralModificationAccess() {
		return pEnumLiteralModification;
	}
	
	public ParserRule getEnumLiteralModificationRule() {
		return getEnumLiteralModificationAccess().getRule();
	}

	//DetailsEntryModification:
	//	remove?="remove"? oldKey=EString ("to" newKey=EString)? ("oldValue" oldValue=EString "to" newValue=EString)? "}";
	public DetailsEntryModificationElements getDetailsEntryModificationAccess() {
		return pDetailsEntryModification;
	}
	
	public ParserRule getDetailsEntryModificationRule() {
		return getDetailsEntryModificationAccess().getRule();
	}

	//AddFeature:
	//	AddAttribute | AddReference;
	public AddFeatureElements getAddFeatureAccess() {
		return pAddFeature;
	}
	
	public ParserRule getAddFeatureRule() {
		return getAddFeatureAccess().getRule();
	}

	//AddAttribute:
	//	"addAttribute" "(" name=EString "," type=PrimitiveType "," lower=EInt "," upper=EInt "," defaultValue=EString ")";
	public AddAttributeElements getAddAttributeAccess() {
		return pAddAttribute;
	}
	
	public ParserRule getAddAttributeRule() {
		return getAddAttributeAccess().getRule();
	}

	//AddReference:
	//	"addReference" "(" name=EString "," type=EString "," lower=EInt "," upper=EInt ")";
	public AddReferenceElements getAddReferenceAccess() {
		return pAddReference;
	}
	
	public ParserRule getAddReferenceRule() {
		return getAddReferenceAccess().getRule();
	}

	//StructuralFeatureModification:
	//	AttributeModification | ReferenceModification;
	public StructuralFeatureModificationElements getStructuralFeatureModificationAccess() {
		return pStructuralFeatureModification;
	}
	
	public ParserRule getStructuralFeatureModificationRule() {
		return getStructuralFeatureModificationAccess().getRule();
	}

	//ChangeBounds:
	//	{ChangeBounds} "bounds" "(" oldLower=EInt "," oldUpper=EInt ")" "to" "(" newLower=EInt "," newUpper=EInt ")";
	public ChangeBoundsElements getChangeBoundsAccess() {
		return pChangeBounds;
	}
	
	public ParserRule getChangeBoundsRule() {
		return getChangeBoundsAccess().getRule();
	}

	//AttributeModification:
	//	remove?="remove"? "att" oldName=EString ("to" newName=EString)? changeBounds=ChangeBounds? (changeType?="changeType"
	//	"to" newType=PrimitiveType)? removeEAnnotations?="removeEAnnotations"? ("annotation" "{"
	//	annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?;
	public AttributeModificationElements getAttributeModificationAccess() {
		return pAttributeModification;
	}
	
	public ParserRule getAttributeModificationRule() {
		return getAttributeModificationAccess().getRule();
	}

	//ReferenceModification:
	//	remove?="remove"? "ref" oldName=EString ("to" newName=EString)? changeBounds=ChangeBounds?
	//	changeContainement?="changeContainement"? removeOpposite?="removeOpposite"? ("addOpposite" addOpposite=AddOpposite)?
	//	("reify" reify=ReferenceReification)? removeEAnnotations?="removeEAnnotations"? ("annotation" "{"
	//	annotationModification+=AnnotationModification (";" annotationModification+=AnnotationModification)* "}")?;
	public ReferenceModificationElements getReferenceModificationAccess() {
		return pReferenceModification;
	}
	
	public ParserRule getReferenceModificationRule() {
		return getReferenceModificationAccess().getRule();
	}

	//PrimitiveType:
	//	"int" | "string" | "boolean" | "char" | "float";
	public PrimitiveTypeElements getPrimitiveTypeAccess() {
		return pPrimitiveType;
	}
	
	public ParserRule getPrimitiveTypeRule() {
		return getPrimitiveTypeAccess().getRule();
	}

	//AddOpposite:
	//	"(" oppositeName=EString "," oppositeLower=EInt "," oppositeUpper=EInt ")";
	public AddOppositeElements getAddOppositeAccess() {
		return pAddOpposite;
	}
	
	public ParserRule getAddOppositeRule() {
		return getAddOppositeAccess().getRule();
	}

	//ReferenceReification:
	//	"(" nameClass=EString "," nameFirstReference=EString "," nameSecondReference=EString ")";
	public ReferenceReificationElements getReferenceReificationAccess() {
		return pReferenceReification;
	}
	
	public ParserRule getReferenceReificationRule() {
		return getReferenceReificationAccess().getRule();
	}

	//AddDerivedReference:
	//	"addDerivedRef" newName=EString ":" referenceName+=EString ("," referenceName+=EString)*;
	public AddDerivedReferenceElements getAddDerivedReferenceAccess() {
		return pAddDerivedReference;
	}
	
	public ParserRule getAddDerivedReferenceRule() {
		return getAddDerivedReferenceAccess().getRule();
	}

	//AddDerivedAttribute:
	//	"addDerivedAtt" newName=EString ":" referenceName+=EString ("," referenceName+=EString)* ":" attributeName=EString;
	public AddDerivedAttributeElements getAddDerivedAttributeAccess() {
		return pAddDerivedAttribute;
	}
	
	public ParserRule getAddDerivedAttributeRule() {
		return getAddDerivedAttributeAccess().getRule();
	}

	//Enumerate:
	//	{Enumerate} "enumerate" "(" enumName=EString "," attributeName=EString ")";
	public EnumerateElements getEnumerateAccess() {
		return pEnumerate;
	}
	
	public ParserRule getEnumerateRule() {
		return getEnumerateAccess().getRule();
	}

	//EInt returns ecore::EInt:
	//	"-"? INT;
	public EIntElements getEIntAccess() {
		return pEInt;
	}
	
	public ParserRule getEIntRule() {
		return getEIntAccess().getRule();
	}

	//EBoolean returns ecore::EBoolean:
	//	"true" | "false";
	public EBooleanElements getEBooleanAccess() {
		return pEBoolean;
	}
	
	public ParserRule getEBooleanRule() {
		return getEBooleanAccess().getRule();
	}

	//EString returns ecore::EString:
	//	STRING | ID;
	public EStringElements getEStringAccess() {
		return pEString;
	}
	
	public ParserRule getEStringRule() {
		return getEStringAccess().getRule();
	}

	//terminal ID:
	//	"^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*;
	public TerminalRule getIDRule() {
		return gaTerminals.getIDRule();
	} 

	//terminal INT returns ecore::EInt:
	//	"0".."9"+;
	public TerminalRule getINTRule() {
		return gaTerminals.getINTRule();
	} 

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

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

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

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

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