/*
* generated by Xtext
*/
package org.xtext.example.mydsl2.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 MyDsl2GrammarAccess extends AbstractGrammarElementFinder {
	
	
	public class UserModelElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "UserModel");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cUserModelKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameQualifiedNameParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cUsersKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cUsersAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cUsersUserParserRuleCall_3_2_0 = (RuleCall)cUsersAssignment_3_2.eContents().get(0);
		private final Assignment cUsersAssignment_3_3 = (Assignment)cGroup_3.eContents().get(3);
		private final RuleCall cUsersUserParserRuleCall_3_3_0 = (RuleCall)cUsersAssignment_3_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cSitePermissionsKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cSitePermissionsAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cSitePermissionsSitePermissionParserRuleCall_4_2_0 = (RuleCall)cSitePermissionsAssignment_4_2.eContents().get(0);
		private final Assignment cSitePermissionsAssignment_4_3 = (Assignment)cGroup_4.eContents().get(3);
		private final RuleCall cSitePermissionsSitePermissionParserRuleCall_4_3_0 = (RuleCall)cSitePermissionsAssignment_4_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_4 = (Keyword)cGroup_4.eContents().get(4);
		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//UserModel:
		//
		//	"UserModel" name=QualifiedName "{" ("users" "{" users+=User users+=User* "}")? ("sitePermissions" "{"
		//
		//	sitePermissions+=SitePermission sitePermissions+=SitePermission* "}")? "}";
		public ParserRule getRule() { return rule; }

		//"UserModel" name=QualifiedName "{" ("users" "{" users+=User users+=User* "}")? ("sitePermissions" "{"
		//
		//sitePermissions+=SitePermission sitePermissions+=SitePermission* "}")? "}"
		public Group getGroup() { return cGroup; }

		//"UserModel"
		public Keyword getUserModelKeyword_0() { return cUserModelKeyword_0; }

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

		//QualifiedName
		public RuleCall getNameQualifiedNameParserRuleCall_1_0() { return cNameQualifiedNameParserRuleCall_1_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }

		//("users" "{" users+=User users+=User* "}")?
		public Group getGroup_3() { return cGroup_3; }

		//"users"
		public Keyword getUsersKeyword_3_0() { return cUsersKeyword_3_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_3_1() { return cLeftCurlyBracketKeyword_3_1; }

		//users+=User
		public Assignment getUsersAssignment_3_2() { return cUsersAssignment_3_2; }

		//User
		public RuleCall getUsersUserParserRuleCall_3_2_0() { return cUsersUserParserRuleCall_3_2_0; }

		//users+=User*
		public Assignment getUsersAssignment_3_3() { return cUsersAssignment_3_3; }

		//User
		public RuleCall getUsersUserParserRuleCall_3_3_0() { return cUsersUserParserRuleCall_3_3_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_3_4() { return cRightCurlyBracketKeyword_3_4; }

		//("sitePermissions" "{" sitePermissions+=SitePermission sitePermissions+=SitePermission* "}")?
		public Group getGroup_4() { return cGroup_4; }

		//"sitePermissions"
		public Keyword getSitePermissionsKeyword_4_0() { return cSitePermissionsKeyword_4_0; }

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

		//sitePermissions+=SitePermission
		public Assignment getSitePermissionsAssignment_4_2() { return cSitePermissionsAssignment_4_2; }

		//SitePermission
		public RuleCall getSitePermissionsSitePermissionParserRuleCall_4_2_0() { return cSitePermissionsSitePermissionParserRuleCall_4_2_0; }

		//sitePermissions+=SitePermission*
		public Assignment getSitePermissionsAssignment_4_3() { return cSitePermissionsAssignment_4_3; }

		//SitePermission
		public RuleCall getSitePermissionsSitePermissionParserRuleCall_4_3_0() { return cSitePermissionsSitePermissionParserRuleCall_4_3_0; }

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

		//"}"
		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
	}

	public class SitePermissionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SitePermission");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSitePermissionKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameQualifiedNameParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cWebGUIDKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cEqualsSignKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cWebGUIDAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cWebGUIDSTRINGTerminalRuleCall_5_0 = (RuleCall)cWebGUIDAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cGroupsKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cOwnedGroupAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cOwnedGroupGroupParserRuleCall_6_2_0 = (RuleCall)cOwnedGroupAssignment_6_2.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6_3 = (Keyword)cGroup_6.eContents().get(3);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cRoleDefinitionsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cOwnedRoleDefinitionAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cOwnedRoleDefinitionRoleDefinitionParserRuleCall_7_2_0 = (RuleCall)cOwnedRoleDefinitionAssignment_7_2.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 cRoleAssignmentsKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cOwnedRoleAssignmentsAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final RuleCall cOwnedRoleAssignmentsRoleAssignmentParserRuleCall_8_2_0 = (RuleCall)cOwnedRoleAssignmentsAssignment_8_2.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_8_3 = (Keyword)cGroup_8.eContents().get(3);
		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
		
		//SitePermission:
		//
		//	"sitePermission" name=QualifiedName "{" "webGUID" "=" webGUID=STRING ("groups" "{" ownedGroup+=Group* "}")?
		//
		//	("roleDefinitions" "{" ownedRoleDefinition+=RoleDefinition* "}")? ("roleAssignments" "{"
		//
		//	ownedRoleAssignments+=RoleAssignment* "}")? "}";
		public ParserRule getRule() { return rule; }

		//"sitePermission" name=QualifiedName "{" "webGUID" "=" webGUID=STRING ("groups" "{" ownedGroup+=Group* "}")?
		//
		//("roleDefinitions" "{" ownedRoleDefinition+=RoleDefinition* "}")? ("roleAssignments" "{"
		//
		//ownedRoleAssignments+=RoleAssignment* "}")? "}"
		public Group getGroup() { return cGroup; }

		//"sitePermission"
		public Keyword getSitePermissionKeyword_0() { return cSitePermissionKeyword_0; }

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

		//QualifiedName
		public RuleCall getNameQualifiedNameParserRuleCall_1_0() { return cNameQualifiedNameParserRuleCall_1_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }

		//"webGUID"
		public Keyword getWebGUIDKeyword_3() { return cWebGUIDKeyword_3; }

		//"="
		public Keyword getEqualsSignKeyword_4() { return cEqualsSignKeyword_4; }

		//webGUID=STRING
		public Assignment getWebGUIDAssignment_5() { return cWebGUIDAssignment_5; }

		//STRING
		public RuleCall getWebGUIDSTRINGTerminalRuleCall_5_0() { return cWebGUIDSTRINGTerminalRuleCall_5_0; }

		//("groups" "{" ownedGroup+=Group* "}")?
		public Group getGroup_6() { return cGroup_6; }

		//"groups"
		public Keyword getGroupsKeyword_6_0() { return cGroupsKeyword_6_0; }

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

		//ownedGroup+=Group*
		public Assignment getOwnedGroupAssignment_6_2() { return cOwnedGroupAssignment_6_2; }

		//Group
		public RuleCall getOwnedGroupGroupParserRuleCall_6_2_0() { return cOwnedGroupGroupParserRuleCall_6_2_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_6_3() { return cRightCurlyBracketKeyword_6_3; }

		//("roleDefinitions" "{" ownedRoleDefinition+=RoleDefinition* "}")?
		public Group getGroup_7() { return cGroup_7; }

		//"roleDefinitions"
		public Keyword getRoleDefinitionsKeyword_7_0() { return cRoleDefinitionsKeyword_7_0; }

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

		//ownedRoleDefinition+=RoleDefinition*
		public Assignment getOwnedRoleDefinitionAssignment_7_2() { return cOwnedRoleDefinitionAssignment_7_2; }

		//RoleDefinition
		public RuleCall getOwnedRoleDefinitionRoleDefinitionParserRuleCall_7_2_0() { return cOwnedRoleDefinitionRoleDefinitionParserRuleCall_7_2_0; }

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

		//("roleAssignments" "{" ownedRoleAssignments+=RoleAssignment* "}")?
		public Group getGroup_8() { return cGroup_8; }

		//"roleAssignments"
		public Keyword getRoleAssignmentsKeyword_8_0() { return cRoleAssignmentsKeyword_8_0; }

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

		//ownedRoleAssignments+=RoleAssignment*
		public Assignment getOwnedRoleAssignmentsAssignment_8_2() { return cOwnedRoleAssignmentsAssignment_8_2; }

		//RoleAssignment
		public RuleCall getOwnedRoleAssignmentsRoleAssignmentParserRuleCall_8_2_0() { return cOwnedRoleAssignmentsRoleAssignmentParserRuleCall_8_2_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_8_3() { return cRightCurlyBracketKeyword_8_3; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_9() { return cRightCurlyBracketKeyword_9; }
	}

	public class PrincipleElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Principle");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cUserParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cGroupParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//Principle:
		//
		//	User | Group;
		public ParserRule getRule() { return rule; }

		//User | Group
		public Alternatives getAlternatives() { return cAlternatives; }

		//User
		public RuleCall getUserParserRuleCall_0() { return cUserParserRuleCall_0; }

		//Group
		public RuleCall getGroupParserRuleCall_1() { return cGroupParserRuleCall_1; }
	}

	public class GroupElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Group");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cGroupKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameQualifiedNameParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cUsersKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cUsersAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final CrossReference cUsersUserCrossReference_3_2_0 = (CrossReference)cUsersAssignment_3_2.eContents().get(0);
		private final RuleCall cUsersUserQualifiedNameParserRuleCall_3_2_0_1 = (RuleCall)cUsersUserCrossReference_3_2_0.eContents().get(1);
		private final Group cGroup_3_3 = (Group)cGroup_3.eContents().get(3);
		private final Keyword cCommaKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
		private final Assignment cUsersAssignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1);
		private final CrossReference cUsersUserCrossReference_3_3_1_0 = (CrossReference)cUsersAssignment_3_3_1.eContents().get(0);
		private final RuleCall cUsersUserQualifiedNameParserRuleCall_3_3_1_0_1 = (RuleCall)cUsersUserCrossReference_3_3_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//Group:
		//
		//	"Group" name=QualifiedName "{" ("users" "(" users+=[User|QualifiedName] ("," users+=[User|QualifiedName])* ")")? "}";
		public ParserRule getRule() { return rule; }

		//"Group" name=QualifiedName "{" ("users" "(" users+=[User|QualifiedName] ("," users+=[User|QualifiedName])* ")")? "}"
		public Group getGroup() { return cGroup; }

		//"Group"
		public Keyword getGroupKeyword_0() { return cGroupKeyword_0; }

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

		//QualifiedName
		public RuleCall getNameQualifiedNameParserRuleCall_1_0() { return cNameQualifiedNameParserRuleCall_1_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }

		//("users" "(" users+=[User|QualifiedName] ("," users+=[User|QualifiedName])* ")")?
		public Group getGroup_3() { return cGroup_3; }

		//"users"
		public Keyword getUsersKeyword_3_0() { return cUsersKeyword_3_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_3_1() { return cLeftParenthesisKeyword_3_1; }

		//users+=[User|QualifiedName]
		public Assignment getUsersAssignment_3_2() { return cUsersAssignment_3_2; }

		//[User|QualifiedName]
		public CrossReference getUsersUserCrossReference_3_2_0() { return cUsersUserCrossReference_3_2_0; }

		//QualifiedName
		public RuleCall getUsersUserQualifiedNameParserRuleCall_3_2_0_1() { return cUsersUserQualifiedNameParserRuleCall_3_2_0_1; }

		//("," users+=[User|QualifiedName])*
		public Group getGroup_3_3() { return cGroup_3_3; }

		//","
		public Keyword getCommaKeyword_3_3_0() { return cCommaKeyword_3_3_0; }

		//users+=[User|QualifiedName]
		public Assignment getUsersAssignment_3_3_1() { return cUsersAssignment_3_3_1; }

		//[User|QualifiedName]
		public CrossReference getUsersUserCrossReference_3_3_1_0() { return cUsersUserCrossReference_3_3_1_0; }

		//QualifiedName
		public RuleCall getUsersUserQualifiedNameParserRuleCall_3_3_1_0_1() { return cUsersUserQualifiedNameParserRuleCall_3_3_1_0_1; }

		//")"
		public Keyword getRightParenthesisKeyword_3_4() { return cRightParenthesisKeyword_3_4; }

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

	public class UserElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "User");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cUserKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameQualifiedNameParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cRightCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		
		//User:
		//
		//	"User" name=QualifiedName "{" "}";
		public ParserRule getRule() { return rule; }

		//"User" name=QualifiedName "{" "}"
		public Group getGroup() { return cGroup; }

		//"User"
		public Keyword getUserKeyword_0() { return cUserKeyword_0; }

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

		//QualifiedName
		public RuleCall getNameQualifiedNameParserRuleCall_1_0() { return cNameQualifiedNameParserRuleCall_1_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_3() { return cRightCurlyBracketKeyword_3; }
	}

	public class RoleAssignmentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RoleAssignment");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cRoleAssignmentKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameQualifiedNameParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cMemberKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cEqualsSignKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cMemberAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final CrossReference cMemberPrincipleCrossReference_5_0 = (CrossReference)cMemberAssignment_5.eContents().get(0);
		private final RuleCall cMemberPrincipleQualifiedNameParserRuleCall_5_0_1 = (RuleCall)cMemberPrincipleCrossReference_5_0.eContents().get(1);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cRoleDefinitionBindingsKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cRoleDefinitionBindingsAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final CrossReference cRoleDefinitionBindingsRoleDefinitionCrossReference_6_2_0 = (CrossReference)cRoleDefinitionBindingsAssignment_6_2.eContents().get(0);
		private final RuleCall cRoleDefinitionBindingsRoleDefinitionQualifiedNameParserRuleCall_6_2_0_1 = (RuleCall)cRoleDefinitionBindingsRoleDefinitionCrossReference_6_2_0.eContents().get(1);
		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
		private final Assignment cRoleDefinitionBindingsAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
		private final CrossReference cRoleDefinitionBindingsRoleDefinitionCrossReference_6_3_1_0 = (CrossReference)cRoleDefinitionBindingsAssignment_6_3_1.eContents().get(0);
		private final RuleCall cRoleDefinitionBindingsRoleDefinitionQualifiedNameParserRuleCall_6_3_1_0_1 = (RuleCall)cRoleDefinitionBindingsRoleDefinitionCrossReference_6_3_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//RoleAssignment:
		//
		//	"RoleAssignment" name=QualifiedName "{" "member" "=" member=[Principle|QualifiedName] ("roleDefinitionBindings" "("
		//
		//	roleDefinitionBindings+=[RoleDefinition|QualifiedName] ("," roleDefinitionBindings+=[RoleDefinition|QualifiedName])*
		//
		//	")")? "}";
		public ParserRule getRule() { return rule; }

		//"RoleAssignment" name=QualifiedName "{" "member" "=" member=[Principle|QualifiedName] ("roleDefinitionBindings" "("
		//
		//roleDefinitionBindings+=[RoleDefinition|QualifiedName] ("," roleDefinitionBindings+=[RoleDefinition|QualifiedName])*
		//
		//")")? "}"
		public Group getGroup() { return cGroup; }

		//"RoleAssignment"
		public Keyword getRoleAssignmentKeyword_0() { return cRoleAssignmentKeyword_0; }

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

		//QualifiedName
		public RuleCall getNameQualifiedNameParserRuleCall_1_0() { return cNameQualifiedNameParserRuleCall_1_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }

		//"member"
		public Keyword getMemberKeyword_3() { return cMemberKeyword_3; }

		//"="
		public Keyword getEqualsSignKeyword_4() { return cEqualsSignKeyword_4; }

		//member=[Principle|QualifiedName]
		public Assignment getMemberAssignment_5() { return cMemberAssignment_5; }

		//[Principle|QualifiedName]
		public CrossReference getMemberPrincipleCrossReference_5_0() { return cMemberPrincipleCrossReference_5_0; }

		//QualifiedName
		public RuleCall getMemberPrincipleQualifiedNameParserRuleCall_5_0_1() { return cMemberPrincipleQualifiedNameParserRuleCall_5_0_1; }

		//("roleDefinitionBindings" "(" roleDefinitionBindings+=[RoleDefinition|QualifiedName] (","
		//
		//roleDefinitionBindings+=[RoleDefinition|QualifiedName])* ")")?
		public Group getGroup_6() { return cGroup_6; }

		//"roleDefinitionBindings"
		public Keyword getRoleDefinitionBindingsKeyword_6_0() { return cRoleDefinitionBindingsKeyword_6_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_6_1() { return cLeftParenthesisKeyword_6_1; }

		//roleDefinitionBindings+=[RoleDefinition|QualifiedName]
		public Assignment getRoleDefinitionBindingsAssignment_6_2() { return cRoleDefinitionBindingsAssignment_6_2; }

		//[RoleDefinition|QualifiedName]
		public CrossReference getRoleDefinitionBindingsRoleDefinitionCrossReference_6_2_0() { return cRoleDefinitionBindingsRoleDefinitionCrossReference_6_2_0; }

		//QualifiedName
		public RuleCall getRoleDefinitionBindingsRoleDefinitionQualifiedNameParserRuleCall_6_2_0_1() { return cRoleDefinitionBindingsRoleDefinitionQualifiedNameParserRuleCall_6_2_0_1; }

		//("," roleDefinitionBindings+=[RoleDefinition|QualifiedName])*
		public Group getGroup_6_3() { return cGroup_6_3; }

		//","
		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }

		//roleDefinitionBindings+=[RoleDefinition|QualifiedName]
		public Assignment getRoleDefinitionBindingsAssignment_6_3_1() { return cRoleDefinitionBindingsAssignment_6_3_1; }

		//[RoleDefinition|QualifiedName]
		public CrossReference getRoleDefinitionBindingsRoleDefinitionCrossReference_6_3_1_0() { return cRoleDefinitionBindingsRoleDefinitionCrossReference_6_3_1_0; }

		//QualifiedName
		public RuleCall getRoleDefinitionBindingsRoleDefinitionQualifiedNameParserRuleCall_6_3_1_0_1() { return cRoleDefinitionBindingsRoleDefinitionQualifiedNameParserRuleCall_6_3_1_0_1; }

		//")"
		public Keyword getRightParenthesisKeyword_6_4() { return cRightParenthesisKeyword_6_4; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
	}

	public class RoleDefinitionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RoleDefinition");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cRoleDefinitionKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameQualifiedNameParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cBasePermissionsKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cLeftCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cBasePermissionsAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cBasePermissionsBasePermissionEnumRuleCall_5_0 = (RuleCall)cBasePermissionsAssignment_5.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cCommaKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Assignment cBasePermissionsAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
		private final RuleCall cBasePermissionsBasePermissionEnumRuleCall_6_1_0 = (RuleCall)cBasePermissionsAssignment_6_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
		
		//RoleDefinition:
		//
		//	"RoleDefinition" name=QualifiedName "{" "basePermissions" "{" basePermissions+=BasePermission (","
		//
		//	basePermissions+=BasePermission)* "}" "}";
		public ParserRule getRule() { return rule; }

		//"RoleDefinition" name=QualifiedName "{" "basePermissions" "{" basePermissions+=BasePermission (","
		//
		//basePermissions+=BasePermission)* "}" "}"
		public Group getGroup() { return cGroup; }

		//"RoleDefinition"
		public Keyword getRoleDefinitionKeyword_0() { return cRoleDefinitionKeyword_0; }

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

		//QualifiedName
		public RuleCall getNameQualifiedNameParserRuleCall_1_0() { return cNameQualifiedNameParserRuleCall_1_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }

		//"basePermissions"
		public Keyword getBasePermissionsKeyword_3() { return cBasePermissionsKeyword_3; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_4() { return cLeftCurlyBracketKeyword_4; }

		//basePermissions+=BasePermission
		public Assignment getBasePermissionsAssignment_5() { return cBasePermissionsAssignment_5; }

		//BasePermission
		public RuleCall getBasePermissionsBasePermissionEnumRuleCall_5_0() { return cBasePermissionsBasePermissionEnumRuleCall_5_0; }

		//("," basePermissions+=BasePermission)*
		public Group getGroup_6() { return cGroup_6; }

		//","
		public Keyword getCommaKeyword_6_0() { return cCommaKeyword_6_0; }

		//basePermissions+=BasePermission
		public Assignment getBasePermissionsAssignment_6_1() { return cBasePermissionsAssignment_6_1; }

		//BasePermission
		public RuleCall getBasePermissionsBasePermissionEnumRuleCall_6_1_0() { return cBasePermissionsBasePermissionEnumRuleCall_6_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
	}

	public class QualifiedNameElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QualifiedName");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final RuleCall cIDTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
		
		//QualifiedName:
		//
		//	ID ("." ID)*;
		public ParserRule getRule() { return rule; }

		//ID ("." ID)*
		public Group getGroup() { return cGroup; }

		//ID
		public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }

		//("." ID)*
		public Group getGroup_1() { return cGroup_1; }

		//"."
		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }

		//ID
		public RuleCall getIDTerminalRuleCall_1_1() { return cIDTerminalRuleCall_1_1; }
	}
	
	
	public class BasePermissionElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "BasePermission");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cViewListItemsEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cViewListItemsViewListItemsKeyword_0_0 = (Keyword)cViewListItemsEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cAddListItemsEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cAddListItemsAddListItemsKeyword_1_0 = (Keyword)cAddListItemsEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cEditListItemsEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cEditListItemsEditListItemsKeyword_2_0 = (Keyword)cEditListItemsEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cDeleteListItemsEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cDeleteListItemsDeleteListItemsKeyword_3_0 = (Keyword)cDeleteListItemsEnumLiteralDeclaration_3.eContents().get(0);
		private final EnumLiteralDeclaration cApproveItemsEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
		private final Keyword cApproveItemsApproveItemsKeyword_4_0 = (Keyword)cApproveItemsEnumLiteralDeclaration_4.eContents().get(0);
		private final EnumLiteralDeclaration cOpenItemsEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
		private final Keyword cOpenItemsOpenItemsKeyword_5_0 = (Keyword)cOpenItemsEnumLiteralDeclaration_5.eContents().get(0);
		private final EnumLiteralDeclaration cViewVersionsEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
		private final Keyword cViewVersionsViewVersionsKeyword_6_0 = (Keyword)cViewVersionsEnumLiteralDeclaration_6.eContents().get(0);
		private final EnumLiteralDeclaration cDeleteVersionsEnumLiteralDeclaration_7 = (EnumLiteralDeclaration)cAlternatives.eContents().get(7);
		private final Keyword cDeleteVersionsDeleteVersionsKeyword_7_0 = (Keyword)cDeleteVersionsEnumLiteralDeclaration_7.eContents().get(0);
		private final EnumLiteralDeclaration cCancelCheckoutEnumLiteralDeclaration_8 = (EnumLiteralDeclaration)cAlternatives.eContents().get(8);
		private final Keyword cCancelCheckoutCancelCheckoutKeyword_8_0 = (Keyword)cCancelCheckoutEnumLiteralDeclaration_8.eContents().get(0);
		private final EnumLiteralDeclaration cManagePersonalViewsEnumLiteralDeclaration_9 = (EnumLiteralDeclaration)cAlternatives.eContents().get(9);
		private final Keyword cManagePersonalViewsManagePersonalViewsKeyword_9_0 = (Keyword)cManagePersonalViewsEnumLiteralDeclaration_9.eContents().get(0);
		private final EnumLiteralDeclaration cManageListsEnumLiteralDeclaration_10 = (EnumLiteralDeclaration)cAlternatives.eContents().get(10);
		private final Keyword cManageListsManageListsKeyword_10_0 = (Keyword)cManageListsEnumLiteralDeclaration_10.eContents().get(0);
		private final EnumLiteralDeclaration cViewFormPagesEnumLiteralDeclaration_11 = (EnumLiteralDeclaration)cAlternatives.eContents().get(11);
		private final Keyword cViewFormPagesViewFormPagesKeyword_11_0 = (Keyword)cViewFormPagesEnumLiteralDeclaration_11.eContents().get(0);
		private final EnumLiteralDeclaration cOpenEnumLiteralDeclaration_12 = (EnumLiteralDeclaration)cAlternatives.eContents().get(12);
		private final Keyword cOpenOpenKeyword_12_0 = (Keyword)cOpenEnumLiteralDeclaration_12.eContents().get(0);
		private final EnumLiteralDeclaration cAddAndCustomizePagesEnumLiteralDeclaration_13 = (EnumLiteralDeclaration)cAlternatives.eContents().get(13);
		private final Keyword cAddAndCustomizePagesAddAndCustomizePagesKeyword_13_0 = (Keyword)cAddAndCustomizePagesEnumLiteralDeclaration_13.eContents().get(0);
		private final EnumLiteralDeclaration cApplyThemeAndBorderEnumLiteralDeclaration_14 = (EnumLiteralDeclaration)cAlternatives.eContents().get(14);
		private final Keyword cApplyThemeAndBorderApplyThemeAndBorderKeyword_14_0 = (Keyword)cApplyThemeAndBorderEnumLiteralDeclaration_14.eContents().get(0);
		private final EnumLiteralDeclaration cCreateSSCSiteEnumLiteralDeclaration_15 = (EnumLiteralDeclaration)cAlternatives.eContents().get(15);
		private final Keyword cCreateSSCSiteCreateSSCSiteKeyword_15_0 = (Keyword)cCreateSSCSiteEnumLiteralDeclaration_15.eContents().get(0);
		private final EnumLiteralDeclaration cBrowseDirectoriesEnumLiteralDeclaration_16 = (EnumLiteralDeclaration)cAlternatives.eContents().get(16);
		private final Keyword cBrowseDirectoriesBrowseDirectoriesKeyword_16_0 = (Keyword)cBrowseDirectoriesEnumLiteralDeclaration_16.eContents().get(0);
		private final EnumLiteralDeclaration cBrowseUserInfoEnumLiteralDeclaration_17 = (EnumLiteralDeclaration)cAlternatives.eContents().get(17);
		private final Keyword cBrowseUserInfoBrowseUserInfoKeyword_17_0 = (Keyword)cBrowseUserInfoEnumLiteralDeclaration_17.eContents().get(0);
		private final EnumLiteralDeclaration cAddDelPrivateWebPartsEnumLiteralDeclaration_18 = (EnumLiteralDeclaration)cAlternatives.eContents().get(18);
		private final Keyword cAddDelPrivateWebPartsAddDelPrivateWebPartsKeyword_18_0 = (Keyword)cAddDelPrivateWebPartsEnumLiteralDeclaration_18.eContents().get(0);
		private final EnumLiteralDeclaration cUpdatePersonalWebPartsEnumLiteralDeclaration_19 = (EnumLiteralDeclaration)cAlternatives.eContents().get(19);
		private final Keyword cUpdatePersonalWebPartsUpdatePersonalWebPartsKeyword_19_0 = (Keyword)cUpdatePersonalWebPartsEnumLiteralDeclaration_19.eContents().get(0);
		private final EnumLiteralDeclaration cUseClientIntegrationEnumLiteralDeclaration_20 = (EnumLiteralDeclaration)cAlternatives.eContents().get(20);
		private final Keyword cUseClientIntegrationUseClientIntegrationKeyword_20_0 = (Keyword)cUseClientIntegrationEnumLiteralDeclaration_20.eContents().get(0);
		private final EnumLiteralDeclaration cUseRemoteAPIsEnumLiteralDeclaration_21 = (EnumLiteralDeclaration)cAlternatives.eContents().get(21);
		private final Keyword cUseRemoteAPIsUseRemoteAPIsKeyword_21_0 = (Keyword)cUseRemoteAPIsEnumLiteralDeclaration_21.eContents().get(0);
		private final EnumLiteralDeclaration cCreateAlertsEnumLiteralDeclaration_22 = (EnumLiteralDeclaration)cAlternatives.eContents().get(22);
		private final Keyword cCreateAlertsCreateAlertsKeyword_22_0 = (Keyword)cCreateAlertsEnumLiteralDeclaration_22.eContents().get(0);
		private final EnumLiteralDeclaration cEditMyUserInfoEnumLiteralDeclaration_23 = (EnumLiteralDeclaration)cAlternatives.eContents().get(23);
		private final Keyword cEditMyUserInfoEditMyUserInfoKeyword_23_0 = (Keyword)cEditMyUserInfoEnumLiteralDeclaration_23.eContents().get(0);
		private final EnumLiteralDeclaration cFullMaskEnumLiteralDeclaration_24 = (EnumLiteralDeclaration)cAlternatives.eContents().get(24);
		private final Keyword cFullMaskFullMaskKeyword_24_0 = (Keyword)cFullMaskEnumLiteralDeclaration_24.eContents().get(0);
		
		//enum BasePermission:
		//
		//	ViewListItems | AddListItems | EditListItems | DeleteListItems | ApproveItems | OpenItems | ViewVersions |
		//
		//	DeleteVersions | CancelCheckout | ManagePersonalViews | ManageLists | ViewFormPages | Open | AddAndCustomizePages |
		//
		//	ApplyThemeAndBorder | CreateSSCSite | BrowseDirectories | BrowseUserInfo | AddDelPrivateWebParts |
		//
		//	UpdatePersonalWebParts | UseClientIntegration | UseRemoteAPIs | CreateAlerts | EditMyUserInfo | FullMask;
		public EnumRule getRule() { return rule; }

		//ViewListItems | AddListItems | EditListItems | DeleteListItems | ApproveItems | OpenItems | ViewVersions |
		//
		//DeleteVersions | CancelCheckout | ManagePersonalViews | ManageLists | ViewFormPages | Open | AddAndCustomizePages |
		//
		//ApplyThemeAndBorder | CreateSSCSite | BrowseDirectories | BrowseUserInfo | AddDelPrivateWebParts |
		//
		//UpdatePersonalWebParts | UseClientIntegration | UseRemoteAPIs | CreateAlerts | EditMyUserInfo | FullMask
		public Alternatives getAlternatives() { return cAlternatives; }

		//ViewListItems
		public EnumLiteralDeclaration getViewListItemsEnumLiteralDeclaration_0() { return cViewListItemsEnumLiteralDeclaration_0; }

		//"ViewListItems"
		public Keyword getViewListItemsViewListItemsKeyword_0_0() { return cViewListItemsViewListItemsKeyword_0_0; }

		//AddListItems
		public EnumLiteralDeclaration getAddListItemsEnumLiteralDeclaration_1() { return cAddListItemsEnumLiteralDeclaration_1; }

		//"AddListItems"
		public Keyword getAddListItemsAddListItemsKeyword_1_0() { return cAddListItemsAddListItemsKeyword_1_0; }

		//EditListItems
		public EnumLiteralDeclaration getEditListItemsEnumLiteralDeclaration_2() { return cEditListItemsEnumLiteralDeclaration_2; }

		//"EditListItems"
		public Keyword getEditListItemsEditListItemsKeyword_2_0() { return cEditListItemsEditListItemsKeyword_2_0; }

		//DeleteListItems
		public EnumLiteralDeclaration getDeleteListItemsEnumLiteralDeclaration_3() { return cDeleteListItemsEnumLiteralDeclaration_3; }

		//"DeleteListItems"
		public Keyword getDeleteListItemsDeleteListItemsKeyword_3_0() { return cDeleteListItemsDeleteListItemsKeyword_3_0; }

		//ApproveItems
		public EnumLiteralDeclaration getApproveItemsEnumLiteralDeclaration_4() { return cApproveItemsEnumLiteralDeclaration_4; }

		//"ApproveItems"
		public Keyword getApproveItemsApproveItemsKeyword_4_0() { return cApproveItemsApproveItemsKeyword_4_0; }

		//OpenItems
		public EnumLiteralDeclaration getOpenItemsEnumLiteralDeclaration_5() { return cOpenItemsEnumLiteralDeclaration_5; }

		//"OpenItems"
		public Keyword getOpenItemsOpenItemsKeyword_5_0() { return cOpenItemsOpenItemsKeyword_5_0; }

		//ViewVersions
		public EnumLiteralDeclaration getViewVersionsEnumLiteralDeclaration_6() { return cViewVersionsEnumLiteralDeclaration_6; }

		//"ViewVersions"
		public Keyword getViewVersionsViewVersionsKeyword_6_0() { return cViewVersionsViewVersionsKeyword_6_0; }

		//DeleteVersions
		public EnumLiteralDeclaration getDeleteVersionsEnumLiteralDeclaration_7() { return cDeleteVersionsEnumLiteralDeclaration_7; }

		//"DeleteVersions"
		public Keyword getDeleteVersionsDeleteVersionsKeyword_7_0() { return cDeleteVersionsDeleteVersionsKeyword_7_0; }

		//CancelCheckout
		public EnumLiteralDeclaration getCancelCheckoutEnumLiteralDeclaration_8() { return cCancelCheckoutEnumLiteralDeclaration_8; }

		//"CancelCheckout"
		public Keyword getCancelCheckoutCancelCheckoutKeyword_8_0() { return cCancelCheckoutCancelCheckoutKeyword_8_0; }

		//ManagePersonalViews
		public EnumLiteralDeclaration getManagePersonalViewsEnumLiteralDeclaration_9() { return cManagePersonalViewsEnumLiteralDeclaration_9; }

		//"ManagePersonalViews"
		public Keyword getManagePersonalViewsManagePersonalViewsKeyword_9_0() { return cManagePersonalViewsManagePersonalViewsKeyword_9_0; }

		//ManageLists
		public EnumLiteralDeclaration getManageListsEnumLiteralDeclaration_10() { return cManageListsEnumLiteralDeclaration_10; }

		//"ManageLists"
		public Keyword getManageListsManageListsKeyword_10_0() { return cManageListsManageListsKeyword_10_0; }

		//ViewFormPages
		public EnumLiteralDeclaration getViewFormPagesEnumLiteralDeclaration_11() { return cViewFormPagesEnumLiteralDeclaration_11; }

		//"ViewFormPages"
		public Keyword getViewFormPagesViewFormPagesKeyword_11_0() { return cViewFormPagesViewFormPagesKeyword_11_0; }

		//Open
		public EnumLiteralDeclaration getOpenEnumLiteralDeclaration_12() { return cOpenEnumLiteralDeclaration_12; }

		//"Open"
		public Keyword getOpenOpenKeyword_12_0() { return cOpenOpenKeyword_12_0; }

		//AddAndCustomizePages
		public EnumLiteralDeclaration getAddAndCustomizePagesEnumLiteralDeclaration_13() { return cAddAndCustomizePagesEnumLiteralDeclaration_13; }

		//"AddAndCustomizePages"
		public Keyword getAddAndCustomizePagesAddAndCustomizePagesKeyword_13_0() { return cAddAndCustomizePagesAddAndCustomizePagesKeyword_13_0; }

		//ApplyThemeAndBorder
		public EnumLiteralDeclaration getApplyThemeAndBorderEnumLiteralDeclaration_14() { return cApplyThemeAndBorderEnumLiteralDeclaration_14; }

		//"ApplyThemeAndBorder"
		public Keyword getApplyThemeAndBorderApplyThemeAndBorderKeyword_14_0() { return cApplyThemeAndBorderApplyThemeAndBorderKeyword_14_0; }

		//CreateSSCSite
		public EnumLiteralDeclaration getCreateSSCSiteEnumLiteralDeclaration_15() { return cCreateSSCSiteEnumLiteralDeclaration_15; }

		//"CreateSSCSite"
		public Keyword getCreateSSCSiteCreateSSCSiteKeyword_15_0() { return cCreateSSCSiteCreateSSCSiteKeyword_15_0; }

		//BrowseDirectories
		public EnumLiteralDeclaration getBrowseDirectoriesEnumLiteralDeclaration_16() { return cBrowseDirectoriesEnumLiteralDeclaration_16; }

		//"BrowseDirectories"
		public Keyword getBrowseDirectoriesBrowseDirectoriesKeyword_16_0() { return cBrowseDirectoriesBrowseDirectoriesKeyword_16_0; }

		//BrowseUserInfo
		public EnumLiteralDeclaration getBrowseUserInfoEnumLiteralDeclaration_17() { return cBrowseUserInfoEnumLiteralDeclaration_17; }

		//"BrowseUserInfo"
		public Keyword getBrowseUserInfoBrowseUserInfoKeyword_17_0() { return cBrowseUserInfoBrowseUserInfoKeyword_17_0; }

		//AddDelPrivateWebParts
		public EnumLiteralDeclaration getAddDelPrivateWebPartsEnumLiteralDeclaration_18() { return cAddDelPrivateWebPartsEnumLiteralDeclaration_18; }

		//"AddDelPrivateWebParts"
		public Keyword getAddDelPrivateWebPartsAddDelPrivateWebPartsKeyword_18_0() { return cAddDelPrivateWebPartsAddDelPrivateWebPartsKeyword_18_0; }

		//UpdatePersonalWebParts
		public EnumLiteralDeclaration getUpdatePersonalWebPartsEnumLiteralDeclaration_19() { return cUpdatePersonalWebPartsEnumLiteralDeclaration_19; }

		//"UpdatePersonalWebParts"
		public Keyword getUpdatePersonalWebPartsUpdatePersonalWebPartsKeyword_19_0() { return cUpdatePersonalWebPartsUpdatePersonalWebPartsKeyword_19_0; }

		//UseClientIntegration
		public EnumLiteralDeclaration getUseClientIntegrationEnumLiteralDeclaration_20() { return cUseClientIntegrationEnumLiteralDeclaration_20; }

		//"UseClientIntegration"
		public Keyword getUseClientIntegrationUseClientIntegrationKeyword_20_0() { return cUseClientIntegrationUseClientIntegrationKeyword_20_0; }

		//UseRemoteAPIs
		public EnumLiteralDeclaration getUseRemoteAPIsEnumLiteralDeclaration_21() { return cUseRemoteAPIsEnumLiteralDeclaration_21; }

		//"UseRemoteAPIs"
		public Keyword getUseRemoteAPIsUseRemoteAPIsKeyword_21_0() { return cUseRemoteAPIsUseRemoteAPIsKeyword_21_0; }

		//CreateAlerts
		public EnumLiteralDeclaration getCreateAlertsEnumLiteralDeclaration_22() { return cCreateAlertsEnumLiteralDeclaration_22; }

		//"CreateAlerts"
		public Keyword getCreateAlertsCreateAlertsKeyword_22_0() { return cCreateAlertsCreateAlertsKeyword_22_0; }

		//EditMyUserInfo
		public EnumLiteralDeclaration getEditMyUserInfoEnumLiteralDeclaration_23() { return cEditMyUserInfoEnumLiteralDeclaration_23; }

		//"EditMyUserInfo"
		public Keyword getEditMyUserInfoEditMyUserInfoKeyword_23_0() { return cEditMyUserInfoEditMyUserInfoKeyword_23_0; }

		//FullMask
		public EnumLiteralDeclaration getFullMaskEnumLiteralDeclaration_24() { return cFullMaskEnumLiteralDeclaration_24; }

		//"FullMask"
		public Keyword getFullMaskFullMaskKeyword_24_0() { return cFullMaskFullMaskKeyword_24_0; }
	}
	
	private UserModelElements pUserModel;
	private SitePermissionElements pSitePermission;
	private PrincipleElements pPrinciple;
	private GroupElements pGroup;
	private UserElements pUser;
	private RoleAssignmentElements pRoleAssignment;
	private RoleDefinitionElements pRoleDefinition;
	private BasePermissionElements unknownRuleBasePermission;
	private QualifiedNameElements pQualifiedName;
	
	private final Grammar grammar;

	private TerminalsGrammarAccess gaTerminals;

	@Inject
	public MyDsl2GrammarAccess(GrammarProvider grammarProvider,
		TerminalsGrammarAccess gaTerminals) {
		this.grammar = internalFindGrammar(grammarProvider);
		this.gaTerminals = gaTerminals;
	}
	
	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
		Grammar grammar = grammarProvider.getGrammar(this);
		while (grammar != null) {
			if ("org.xtext.example.mydsl2.MyDsl2".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;
	}

	
	//UserModel:
	//
	//	"UserModel" name=QualifiedName "{" ("users" "{" users+=User users+=User* "}")? ("sitePermissions" "{"
	//
	//	sitePermissions+=SitePermission sitePermissions+=SitePermission* "}")? "}";
	public UserModelElements getUserModelAccess() {
		return (pUserModel != null) ? pUserModel : (pUserModel = new UserModelElements());
	}
	
	public ParserRule getUserModelRule() {
		return getUserModelAccess().getRule();
	}

	//SitePermission:
	//
	//	"sitePermission" name=QualifiedName "{" "webGUID" "=" webGUID=STRING ("groups" "{" ownedGroup+=Group* "}")?
	//
	//	("roleDefinitions" "{" ownedRoleDefinition+=RoleDefinition* "}")? ("roleAssignments" "{"
	//
	//	ownedRoleAssignments+=RoleAssignment* "}")? "}";
	public SitePermissionElements getSitePermissionAccess() {
		return (pSitePermission != null) ? pSitePermission : (pSitePermission = new SitePermissionElements());
	}
	
	public ParserRule getSitePermissionRule() {
		return getSitePermissionAccess().getRule();
	}

	//Principle:
	//
	//	User | Group;
	public PrincipleElements getPrincipleAccess() {
		return (pPrinciple != null) ? pPrinciple : (pPrinciple = new PrincipleElements());
	}
	
	public ParserRule getPrincipleRule() {
		return getPrincipleAccess().getRule();
	}

	//Group:
	//
	//	"Group" name=QualifiedName "{" ("users" "(" users+=[User|QualifiedName] ("," users+=[User|QualifiedName])* ")")? "}";
	public GroupElements getGroupAccess() {
		return (pGroup != null) ? pGroup : (pGroup = new GroupElements());
	}
	
	public ParserRule getGroupRule() {
		return getGroupAccess().getRule();
	}

	//User:
	//
	//	"User" name=QualifiedName "{" "}";
	public UserElements getUserAccess() {
		return (pUser != null) ? pUser : (pUser = new UserElements());
	}
	
	public ParserRule getUserRule() {
		return getUserAccess().getRule();
	}

	//RoleAssignment:
	//
	//	"RoleAssignment" name=QualifiedName "{" "member" "=" member=[Principle|QualifiedName] ("roleDefinitionBindings" "("
	//
	//	roleDefinitionBindings+=[RoleDefinition|QualifiedName] ("," roleDefinitionBindings+=[RoleDefinition|QualifiedName])*
	//
	//	")")? "}";
	public RoleAssignmentElements getRoleAssignmentAccess() {
		return (pRoleAssignment != null) ? pRoleAssignment : (pRoleAssignment = new RoleAssignmentElements());
	}
	
	public ParserRule getRoleAssignmentRule() {
		return getRoleAssignmentAccess().getRule();
	}

	//RoleDefinition:
	//
	//	"RoleDefinition" name=QualifiedName "{" "basePermissions" "{" basePermissions+=BasePermission (","
	//
	//	basePermissions+=BasePermission)* "}" "}";
	public RoleDefinitionElements getRoleDefinitionAccess() {
		return (pRoleDefinition != null) ? pRoleDefinition : (pRoleDefinition = new RoleDefinitionElements());
	}
	
	public ParserRule getRoleDefinitionRule() {
		return getRoleDefinitionAccess().getRule();
	}

	//enum BasePermission:
	//
	//	ViewListItems | AddListItems | EditListItems | DeleteListItems | ApproveItems | OpenItems | ViewVersions |
	//
	//	DeleteVersions | CancelCheckout | ManagePersonalViews | ManageLists | ViewFormPages | Open | AddAndCustomizePages |
	//
	//	ApplyThemeAndBorder | CreateSSCSite | BrowseDirectories | BrowseUserInfo | AddDelPrivateWebParts |
	//
	//	UpdatePersonalWebParts | UseClientIntegration | UseRemoteAPIs | CreateAlerts | EditMyUserInfo | FullMask;
	public BasePermissionElements getBasePermissionAccess() {
		return (unknownRuleBasePermission != null) ? unknownRuleBasePermission : (unknownRuleBasePermission = new BasePermissionElements());
	}
	
	public EnumRule getBasePermissionRule() {
		return getBasePermissionAccess().getRule();
	}

	//QualifiedName:
	//
	//	ID ("." ID)*;
	public QualifiedNameElements getQualifiedNameAccess() {
		return (pQualifiedName != null) ? pQualifiedName : (pQualifiedName = new QualifiedNameElements());
	}
	
	public ParserRule getQualifiedNameRule() {
		return getQualifiedNameAccess().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();
	} 
}
