package org.xtext.example.mydsl2.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.xtext.example.mydsl2.services.MyDsl2GrammarAccess;



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

@SuppressWarnings("all")
public class InternalMyDsl2Parser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'UserModel'", "'{'", "'users'", "'}'", "'sitePermissions'", "'sitePermission'", "'webGUID'", "'='", "'groups'", "'roleDefinitions'", "'roleAssignments'", "'Group'", "'('", "','", "')'", "'User'", "'RoleAssignment'", "'member'", "'roleDefinitionBindings'", "'RoleDefinition'", "'basePermissions'", "'.'", "'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 static final int RULE_ID=5;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__19=19;
    public static final int T__57=57;
    public static final int T__51=51;
    public static final int T__16=16;
    public static final int T__52=52;
    public static final int T__15=15;
    public static final int T__53=53;
    public static final int T__18=18;
    public static final int T__54=54;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=6;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int RULE_SL_COMMENT=8;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int RULE_STRING=4;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=9;

    // delegates
    // delegators


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

    public String[] getTokenNames() { return InternalMyDsl2Parser.tokenNames; }
    public String getGrammarFileName() { return "../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g"; }



     	private MyDsl2GrammarAccess grammarAccess;
     	
        public InternalMyDsl2Parser(TokenStream input, MyDsl2GrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "UserModel";	
       	}
       	
       	@Override
       	protected MyDsl2GrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleUserModel"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:68:1: entryRuleUserModel returns [EObject current=null] : iv_ruleUserModel= ruleUserModel EOF ;
    public final EObject entryRuleUserModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUserModel = null;


        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:69:2: (iv_ruleUserModel= ruleUserModel EOF )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:70:2: iv_ruleUserModel= ruleUserModel EOF
            {
             newCompositeNode(grammarAccess.getUserModelRule()); 
            pushFollow(FOLLOW_ruleUserModel_in_entryRuleUserModel75);
            iv_ruleUserModel=ruleUserModel();

            state._fsp--;

             current =iv_ruleUserModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleUserModel85); 

            }

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


    // $ANTLR start "ruleUserModel"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:77:1: ruleUserModel returns [EObject current=null] : (otherlv_0= 'UserModel' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' (otherlv_3= 'users' otherlv_4= '{' ( (lv_users_5_0= ruleUser ) ) ( (lv_users_6_0= ruleUser ) )* otherlv_7= '}' )? (otherlv_8= 'sitePermissions' otherlv_9= '{' ( (lv_sitePermissions_10_0= ruleSitePermission ) ) ( (lv_sitePermissions_11_0= ruleSitePermission ) )* otherlv_12= '}' )? otherlv_13= '}' ) ;
    public final EObject ruleUserModel() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_users_5_0 = null;

        EObject lv_users_6_0 = null;

        EObject lv_sitePermissions_10_0 = null;

        EObject lv_sitePermissions_11_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:80:28: ( (otherlv_0= 'UserModel' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' (otherlv_3= 'users' otherlv_4= '{' ( (lv_users_5_0= ruleUser ) ) ( (lv_users_6_0= ruleUser ) )* otherlv_7= '}' )? (otherlv_8= 'sitePermissions' otherlv_9= '{' ( (lv_sitePermissions_10_0= ruleSitePermission ) ) ( (lv_sitePermissions_11_0= ruleSitePermission ) )* otherlv_12= '}' )? otherlv_13= '}' ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:81:1: (otherlv_0= 'UserModel' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' (otherlv_3= 'users' otherlv_4= '{' ( (lv_users_5_0= ruleUser ) ) ( (lv_users_6_0= ruleUser ) )* otherlv_7= '}' )? (otherlv_8= 'sitePermissions' otherlv_9= '{' ( (lv_sitePermissions_10_0= ruleSitePermission ) ) ( (lv_sitePermissions_11_0= ruleSitePermission ) )* otherlv_12= '}' )? otherlv_13= '}' )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:81:1: (otherlv_0= 'UserModel' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' (otherlv_3= 'users' otherlv_4= '{' ( (lv_users_5_0= ruleUser ) ) ( (lv_users_6_0= ruleUser ) )* otherlv_7= '}' )? (otherlv_8= 'sitePermissions' otherlv_9= '{' ( (lv_sitePermissions_10_0= ruleSitePermission ) ) ( (lv_sitePermissions_11_0= ruleSitePermission ) )* otherlv_12= '}' )? otherlv_13= '}' )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:81:3: otherlv_0= 'UserModel' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' (otherlv_3= 'users' otherlv_4= '{' ( (lv_users_5_0= ruleUser ) ) ( (lv_users_6_0= ruleUser ) )* otherlv_7= '}' )? (otherlv_8= 'sitePermissions' otherlv_9= '{' ( (lv_sitePermissions_10_0= ruleSitePermission ) ) ( (lv_sitePermissions_11_0= ruleSitePermission ) )* otherlv_12= '}' )? otherlv_13= '}'
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleUserModel122); 

                	newLeafNode(otherlv_0, grammarAccess.getUserModelAccess().getUserModelKeyword_0());
                
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:85:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:86:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:86:1: (lv_name_1_0= ruleQualifiedName )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:87:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getUserModelAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleUserModel143);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getUserModelRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleUserModel155); 

                	newLeafNode(otherlv_2, grammarAccess.getUserModelAccess().getLeftCurlyBracketKeyword_2());
                
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:107:1: (otherlv_3= 'users' otherlv_4= '{' ( (lv_users_5_0= ruleUser ) ) ( (lv_users_6_0= ruleUser ) )* otherlv_7= '}' )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==13) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:107:3: otherlv_3= 'users' otherlv_4= '{' ( (lv_users_5_0= ruleUser ) ) ( (lv_users_6_0= ruleUser ) )* otherlv_7= '}'
                    {
                    otherlv_3=(Token)match(input,13,FOLLOW_13_in_ruleUserModel168); 

                        	newLeafNode(otherlv_3, grammarAccess.getUserModelAccess().getUsersKeyword_3_0());
                        
                    otherlv_4=(Token)match(input,12,FOLLOW_12_in_ruleUserModel180); 

                        	newLeafNode(otherlv_4, grammarAccess.getUserModelAccess().getLeftCurlyBracketKeyword_3_1());
                        
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:115:1: ( (lv_users_5_0= ruleUser ) )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:116:1: (lv_users_5_0= ruleUser )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:116:1: (lv_users_5_0= ruleUser )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:117:3: lv_users_5_0= ruleUser
                    {
                     
                    	        newCompositeNode(grammarAccess.getUserModelAccess().getUsersUserParserRuleCall_3_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleUser_in_ruleUserModel201);
                    lv_users_5_0=ruleUser();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getUserModelRule());
                    	        }
                           		add(
                           			current, 
                           			"users",
                            		lv_users_5_0, 
                            		"User");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:133:2: ( (lv_users_6_0= ruleUser ) )*
                    loop1:
                    do {
                        int alt1=2;
                        int LA1_0 = input.LA(1);

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


                        switch (alt1) {
                    	case 1 :
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:134:1: (lv_users_6_0= ruleUser )
                    	    {
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:134:1: (lv_users_6_0= ruleUser )
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:135:3: lv_users_6_0= ruleUser
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getUserModelAccess().getUsersUserParserRuleCall_3_3_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleUser_in_ruleUserModel222);
                    	    lv_users_6_0=ruleUser();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getUserModelRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"users",
                    	            		lv_users_6_0, 
                    	            		"User");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

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

                    otherlv_7=(Token)match(input,14,FOLLOW_14_in_ruleUserModel235); 

                        	newLeafNode(otherlv_7, grammarAccess.getUserModelAccess().getRightCurlyBracketKeyword_3_4());
                        

                    }
                    break;

            }

            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:155:3: (otherlv_8= 'sitePermissions' otherlv_9= '{' ( (lv_sitePermissions_10_0= ruleSitePermission ) ) ( (lv_sitePermissions_11_0= ruleSitePermission ) )* otherlv_12= '}' )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==15) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:155:5: otherlv_8= 'sitePermissions' otherlv_9= '{' ( (lv_sitePermissions_10_0= ruleSitePermission ) ) ( (lv_sitePermissions_11_0= ruleSitePermission ) )* otherlv_12= '}'
                    {
                    otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleUserModel250); 

                        	newLeafNode(otherlv_8, grammarAccess.getUserModelAccess().getSitePermissionsKeyword_4_0());
                        
                    otherlv_9=(Token)match(input,12,FOLLOW_12_in_ruleUserModel262); 

                        	newLeafNode(otherlv_9, grammarAccess.getUserModelAccess().getLeftCurlyBracketKeyword_4_1());
                        
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:163:1: ( (lv_sitePermissions_10_0= ruleSitePermission ) )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:164:1: (lv_sitePermissions_10_0= ruleSitePermission )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:164:1: (lv_sitePermissions_10_0= ruleSitePermission )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:165:3: lv_sitePermissions_10_0= ruleSitePermission
                    {
                     
                    	        newCompositeNode(grammarAccess.getUserModelAccess().getSitePermissionsSitePermissionParserRuleCall_4_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleSitePermission_in_ruleUserModel283);
                    lv_sitePermissions_10_0=ruleSitePermission();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getUserModelRule());
                    	        }
                           		add(
                           			current, 
                           			"sitePermissions",
                            		lv_sitePermissions_10_0, 
                            		"SitePermission");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:181:2: ( (lv_sitePermissions_11_0= ruleSitePermission ) )*
                    loop3:
                    do {
                        int alt3=2;
                        int LA3_0 = input.LA(1);

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


                        switch (alt3) {
                    	case 1 :
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:182:1: (lv_sitePermissions_11_0= ruleSitePermission )
                    	    {
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:182:1: (lv_sitePermissions_11_0= ruleSitePermission )
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:183:3: lv_sitePermissions_11_0= ruleSitePermission
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getUserModelAccess().getSitePermissionsSitePermissionParserRuleCall_4_3_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleSitePermission_in_ruleUserModel304);
                    	    lv_sitePermissions_11_0=ruleSitePermission();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getUserModelRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"sitePermissions",
                    	            		lv_sitePermissions_11_0, 
                    	            		"SitePermission");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

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

                    otherlv_12=(Token)match(input,14,FOLLOW_14_in_ruleUserModel317); 

                        	newLeafNode(otherlv_12, grammarAccess.getUserModelAccess().getRightCurlyBracketKeyword_4_4());
                        

                    }
                    break;

            }

            otherlv_13=(Token)match(input,14,FOLLOW_14_in_ruleUserModel331); 

                	newLeafNode(otherlv_13, grammarAccess.getUserModelAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

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


    // $ANTLR start "entryRuleSitePermission"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:215:1: entryRuleSitePermission returns [EObject current=null] : iv_ruleSitePermission= ruleSitePermission EOF ;
    public final EObject entryRuleSitePermission() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSitePermission = null;


        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:216:2: (iv_ruleSitePermission= ruleSitePermission EOF )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:217:2: iv_ruleSitePermission= ruleSitePermission EOF
            {
             newCompositeNode(grammarAccess.getSitePermissionRule()); 
            pushFollow(FOLLOW_ruleSitePermission_in_entryRuleSitePermission367);
            iv_ruleSitePermission=ruleSitePermission();

            state._fsp--;

             current =iv_ruleSitePermission; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSitePermission377); 

            }

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


    // $ANTLR start "ruleSitePermission"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:224:1: ruleSitePermission returns [EObject current=null] : (otherlv_0= 'sitePermission' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'webGUID' otherlv_4= '=' ( (lv_webGUID_5_0= RULE_STRING ) ) (otherlv_6= 'groups' otherlv_7= '{' ( (lv_ownedGroup_8_0= ruleGroup ) )* otherlv_9= '}' )? (otherlv_10= 'roleDefinitions' otherlv_11= '{' ( (lv_ownedRoleDefinition_12_0= ruleRoleDefinition ) )* otherlv_13= '}' )? (otherlv_14= 'roleAssignments' otherlv_15= '{' ( (lv_ownedRoleAssignments_16_0= ruleRoleAssignment ) )* otherlv_17= '}' )? otherlv_18= '}' ) ;
    public final EObject ruleSitePermission() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token lv_webGUID_5_0=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        Token otherlv_17=null;
        Token otherlv_18=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_ownedGroup_8_0 = null;

        EObject lv_ownedRoleDefinition_12_0 = null;

        EObject lv_ownedRoleAssignments_16_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:227:28: ( (otherlv_0= 'sitePermission' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'webGUID' otherlv_4= '=' ( (lv_webGUID_5_0= RULE_STRING ) ) (otherlv_6= 'groups' otherlv_7= '{' ( (lv_ownedGroup_8_0= ruleGroup ) )* otherlv_9= '}' )? (otherlv_10= 'roleDefinitions' otherlv_11= '{' ( (lv_ownedRoleDefinition_12_0= ruleRoleDefinition ) )* otherlv_13= '}' )? (otherlv_14= 'roleAssignments' otherlv_15= '{' ( (lv_ownedRoleAssignments_16_0= ruleRoleAssignment ) )* otherlv_17= '}' )? otherlv_18= '}' ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:228:1: (otherlv_0= 'sitePermission' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'webGUID' otherlv_4= '=' ( (lv_webGUID_5_0= RULE_STRING ) ) (otherlv_6= 'groups' otherlv_7= '{' ( (lv_ownedGroup_8_0= ruleGroup ) )* otherlv_9= '}' )? (otherlv_10= 'roleDefinitions' otherlv_11= '{' ( (lv_ownedRoleDefinition_12_0= ruleRoleDefinition ) )* otherlv_13= '}' )? (otherlv_14= 'roleAssignments' otherlv_15= '{' ( (lv_ownedRoleAssignments_16_0= ruleRoleAssignment ) )* otherlv_17= '}' )? otherlv_18= '}' )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:228:1: (otherlv_0= 'sitePermission' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'webGUID' otherlv_4= '=' ( (lv_webGUID_5_0= RULE_STRING ) ) (otherlv_6= 'groups' otherlv_7= '{' ( (lv_ownedGroup_8_0= ruleGroup ) )* otherlv_9= '}' )? (otherlv_10= 'roleDefinitions' otherlv_11= '{' ( (lv_ownedRoleDefinition_12_0= ruleRoleDefinition ) )* otherlv_13= '}' )? (otherlv_14= 'roleAssignments' otherlv_15= '{' ( (lv_ownedRoleAssignments_16_0= ruleRoleAssignment ) )* otherlv_17= '}' )? otherlv_18= '}' )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:228:3: otherlv_0= 'sitePermission' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'webGUID' otherlv_4= '=' ( (lv_webGUID_5_0= RULE_STRING ) ) (otherlv_6= 'groups' otherlv_7= '{' ( (lv_ownedGroup_8_0= ruleGroup ) )* otherlv_9= '}' )? (otherlv_10= 'roleDefinitions' otherlv_11= '{' ( (lv_ownedRoleDefinition_12_0= ruleRoleDefinition ) )* otherlv_13= '}' )? (otherlv_14= 'roleAssignments' otherlv_15= '{' ( (lv_ownedRoleAssignments_16_0= ruleRoleAssignment ) )* otherlv_17= '}' )? otherlv_18= '}'
            {
            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleSitePermission414); 

                	newLeafNode(otherlv_0, grammarAccess.getSitePermissionAccess().getSitePermissionKeyword_0());
                
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:232:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:233:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:233:1: (lv_name_1_0= ruleQualifiedName )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:234:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getSitePermissionAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleSitePermission435);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSitePermissionRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleSitePermission447); 

                	newLeafNode(otherlv_2, grammarAccess.getSitePermissionAccess().getLeftCurlyBracketKeyword_2());
                
            otherlv_3=(Token)match(input,17,FOLLOW_17_in_ruleSitePermission459); 

                	newLeafNode(otherlv_3, grammarAccess.getSitePermissionAccess().getWebGUIDKeyword_3());
                
            otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleSitePermission471); 

                	newLeafNode(otherlv_4, grammarAccess.getSitePermissionAccess().getEqualsSignKeyword_4());
                
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:262:1: ( (lv_webGUID_5_0= RULE_STRING ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:263:1: (lv_webGUID_5_0= RULE_STRING )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:263:1: (lv_webGUID_5_0= RULE_STRING )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:264:3: lv_webGUID_5_0= RULE_STRING
            {
            lv_webGUID_5_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleSitePermission488); 

            			newLeafNode(lv_webGUID_5_0, grammarAccess.getSitePermissionAccess().getWebGUIDSTRINGTerminalRuleCall_5_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getSitePermissionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"webGUID",
                    		lv_webGUID_5_0, 
                    		"STRING");
            	    

            }


            }

            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:280:2: (otherlv_6= 'groups' otherlv_7= '{' ( (lv_ownedGroup_8_0= ruleGroup ) )* otherlv_9= '}' )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==19) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:280:4: otherlv_6= 'groups' otherlv_7= '{' ( (lv_ownedGroup_8_0= ruleGroup ) )* otherlv_9= '}'
                    {
                    otherlv_6=(Token)match(input,19,FOLLOW_19_in_ruleSitePermission506); 

                        	newLeafNode(otherlv_6, grammarAccess.getSitePermissionAccess().getGroupsKeyword_6_0());
                        
                    otherlv_7=(Token)match(input,12,FOLLOW_12_in_ruleSitePermission518); 

                        	newLeafNode(otherlv_7, grammarAccess.getSitePermissionAccess().getLeftCurlyBracketKeyword_6_1());
                        
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:288:1: ( (lv_ownedGroup_8_0= ruleGroup ) )*
                    loop5:
                    do {
                        int alt5=2;
                        int LA5_0 = input.LA(1);

                        if ( (LA5_0==22) ) {
                            alt5=1;
                        }


                        switch (alt5) {
                    	case 1 :
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:289:1: (lv_ownedGroup_8_0= ruleGroup )
                    	    {
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:289:1: (lv_ownedGroup_8_0= ruleGroup )
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:290:3: lv_ownedGroup_8_0= ruleGroup
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getSitePermissionAccess().getOwnedGroupGroupParserRuleCall_6_2_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleGroup_in_ruleSitePermission539);
                    	    lv_ownedGroup_8_0=ruleGroup();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getSitePermissionRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"ownedGroup",
                    	            		lv_ownedGroup_8_0, 
                    	            		"Group");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

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

                    otherlv_9=(Token)match(input,14,FOLLOW_14_in_ruleSitePermission552); 

                        	newLeafNode(otherlv_9, grammarAccess.getSitePermissionAccess().getRightCurlyBracketKeyword_6_3());
                        

                    }
                    break;

            }

            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:310:3: (otherlv_10= 'roleDefinitions' otherlv_11= '{' ( (lv_ownedRoleDefinition_12_0= ruleRoleDefinition ) )* otherlv_13= '}' )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==20) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:310:5: otherlv_10= 'roleDefinitions' otherlv_11= '{' ( (lv_ownedRoleDefinition_12_0= ruleRoleDefinition ) )* otherlv_13= '}'
                    {
                    otherlv_10=(Token)match(input,20,FOLLOW_20_in_ruleSitePermission567); 

                        	newLeafNode(otherlv_10, grammarAccess.getSitePermissionAccess().getRoleDefinitionsKeyword_7_0());
                        
                    otherlv_11=(Token)match(input,12,FOLLOW_12_in_ruleSitePermission579); 

                        	newLeafNode(otherlv_11, grammarAccess.getSitePermissionAccess().getLeftCurlyBracketKeyword_7_1());
                        
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:318:1: ( (lv_ownedRoleDefinition_12_0= ruleRoleDefinition ) )*
                    loop7:
                    do {
                        int alt7=2;
                        int LA7_0 = input.LA(1);

                        if ( (LA7_0==30) ) {
                            alt7=1;
                        }


                        switch (alt7) {
                    	case 1 :
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:319:1: (lv_ownedRoleDefinition_12_0= ruleRoleDefinition )
                    	    {
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:319:1: (lv_ownedRoleDefinition_12_0= ruleRoleDefinition )
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:320:3: lv_ownedRoleDefinition_12_0= ruleRoleDefinition
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getSitePermissionAccess().getOwnedRoleDefinitionRoleDefinitionParserRuleCall_7_2_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleRoleDefinition_in_ruleSitePermission600);
                    	    lv_ownedRoleDefinition_12_0=ruleRoleDefinition();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getSitePermissionRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"ownedRoleDefinition",
                    	            		lv_ownedRoleDefinition_12_0, 
                    	            		"RoleDefinition");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

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

                    otherlv_13=(Token)match(input,14,FOLLOW_14_in_ruleSitePermission613); 

                        	newLeafNode(otherlv_13, grammarAccess.getSitePermissionAccess().getRightCurlyBracketKeyword_7_3());
                        

                    }
                    break;

            }

            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:340:3: (otherlv_14= 'roleAssignments' otherlv_15= '{' ( (lv_ownedRoleAssignments_16_0= ruleRoleAssignment ) )* otherlv_17= '}' )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==21) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:340:5: otherlv_14= 'roleAssignments' otherlv_15= '{' ( (lv_ownedRoleAssignments_16_0= ruleRoleAssignment ) )* otherlv_17= '}'
                    {
                    otherlv_14=(Token)match(input,21,FOLLOW_21_in_ruleSitePermission628); 

                        	newLeafNode(otherlv_14, grammarAccess.getSitePermissionAccess().getRoleAssignmentsKeyword_8_0());
                        
                    otherlv_15=(Token)match(input,12,FOLLOW_12_in_ruleSitePermission640); 

                        	newLeafNode(otherlv_15, grammarAccess.getSitePermissionAccess().getLeftCurlyBracketKeyword_8_1());
                        
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:348:1: ( (lv_ownedRoleAssignments_16_0= ruleRoleAssignment ) )*
                    loop9:
                    do {
                        int alt9=2;
                        int LA9_0 = input.LA(1);

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


                        switch (alt9) {
                    	case 1 :
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:349:1: (lv_ownedRoleAssignments_16_0= ruleRoleAssignment )
                    	    {
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:349:1: (lv_ownedRoleAssignments_16_0= ruleRoleAssignment )
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:350:3: lv_ownedRoleAssignments_16_0= ruleRoleAssignment
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getSitePermissionAccess().getOwnedRoleAssignmentsRoleAssignmentParserRuleCall_8_2_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleRoleAssignment_in_ruleSitePermission661);
                    	    lv_ownedRoleAssignments_16_0=ruleRoleAssignment();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getSitePermissionRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"ownedRoleAssignments",
                    	            		lv_ownedRoleAssignments_16_0, 
                    	            		"RoleAssignment");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

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

                    otherlv_17=(Token)match(input,14,FOLLOW_14_in_ruleSitePermission674); 

                        	newLeafNode(otherlv_17, grammarAccess.getSitePermissionAccess().getRightCurlyBracketKeyword_8_3());
                        

                    }
                    break;

            }

            otherlv_18=(Token)match(input,14,FOLLOW_14_in_ruleSitePermission688); 

                	newLeafNode(otherlv_18, grammarAccess.getSitePermissionAccess().getRightCurlyBracketKeyword_9());
                

            }


            }

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


    // $ANTLR start "entryRuleGroup"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:384:1: entryRuleGroup returns [EObject current=null] : iv_ruleGroup= ruleGroup EOF ;
    public final EObject entryRuleGroup() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGroup = null;


        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:385:2: (iv_ruleGroup= ruleGroup EOF )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:386:2: iv_ruleGroup= ruleGroup EOF
            {
             newCompositeNode(grammarAccess.getGroupRule()); 
            pushFollow(FOLLOW_ruleGroup_in_entryRuleGroup726);
            iv_ruleGroup=ruleGroup();

            state._fsp--;

             current =iv_ruleGroup; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleGroup736); 

            }

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


    // $ANTLR start "ruleGroup"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:393:1: ruleGroup returns [EObject current=null] : (otherlv_0= 'Group' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' (otherlv_3= 'users' otherlv_4= '(' ( ( ruleQualifiedName ) ) (otherlv_6= ',' ( ( ruleQualifiedName ) ) )* otherlv_8= ')' )? otherlv_9= '}' ) ;
    public final EObject ruleGroup() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:396:28: ( (otherlv_0= 'Group' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' (otherlv_3= 'users' otherlv_4= '(' ( ( ruleQualifiedName ) ) (otherlv_6= ',' ( ( ruleQualifiedName ) ) )* otherlv_8= ')' )? otherlv_9= '}' ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:397:1: (otherlv_0= 'Group' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' (otherlv_3= 'users' otherlv_4= '(' ( ( ruleQualifiedName ) ) (otherlv_6= ',' ( ( ruleQualifiedName ) ) )* otherlv_8= ')' )? otherlv_9= '}' )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:397:1: (otherlv_0= 'Group' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' (otherlv_3= 'users' otherlv_4= '(' ( ( ruleQualifiedName ) ) (otherlv_6= ',' ( ( ruleQualifiedName ) ) )* otherlv_8= ')' )? otherlv_9= '}' )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:397:3: otherlv_0= 'Group' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' (otherlv_3= 'users' otherlv_4= '(' ( ( ruleQualifiedName ) ) (otherlv_6= ',' ( ( ruleQualifiedName ) ) )* otherlv_8= ')' )? otherlv_9= '}'
            {
            otherlv_0=(Token)match(input,22,FOLLOW_22_in_ruleGroup773); 

                	newLeafNode(otherlv_0, grammarAccess.getGroupAccess().getGroupKeyword_0());
                
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:401:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:402:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:402:1: (lv_name_1_0= ruleQualifiedName )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:403:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getGroupAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleGroup794);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getGroupRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleGroup806); 

                	newLeafNode(otherlv_2, grammarAccess.getGroupAccess().getLeftCurlyBracketKeyword_2());
                
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:423:1: (otherlv_3= 'users' otherlv_4= '(' ( ( ruleQualifiedName ) ) (otherlv_6= ',' ( ( ruleQualifiedName ) ) )* otherlv_8= ')' )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==13) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:423:3: otherlv_3= 'users' otherlv_4= '(' ( ( ruleQualifiedName ) ) (otherlv_6= ',' ( ( ruleQualifiedName ) ) )* otherlv_8= ')'
                    {
                    otherlv_3=(Token)match(input,13,FOLLOW_13_in_ruleGroup819); 

                        	newLeafNode(otherlv_3, grammarAccess.getGroupAccess().getUsersKeyword_3_0());
                        
                    otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleGroup831); 

                        	newLeafNode(otherlv_4, grammarAccess.getGroupAccess().getLeftParenthesisKeyword_3_1());
                        
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:431:1: ( ( ruleQualifiedName ) )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:432:1: ( ruleQualifiedName )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:432:1: ( ruleQualifiedName )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:433:3: ruleQualifiedName
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getGroupRule());
                    	        }
                            
                     
                    	        newCompositeNode(grammarAccess.getGroupAccess().getUsersUserCrossReference_3_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleGroup854);
                    ruleQualifiedName();

                    state._fsp--;

                     
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:446:2: (otherlv_6= ',' ( ( ruleQualifiedName ) ) )*
                    loop11:
                    do {
                        int alt11=2;
                        int LA11_0 = input.LA(1);

                        if ( (LA11_0==24) ) {
                            alt11=1;
                        }


                        switch (alt11) {
                    	case 1 :
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:446:4: otherlv_6= ',' ( ( ruleQualifiedName ) )
                    	    {
                    	    otherlv_6=(Token)match(input,24,FOLLOW_24_in_ruleGroup867); 

                    	        	newLeafNode(otherlv_6, grammarAccess.getGroupAccess().getCommaKeyword_3_3_0());
                    	        
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:450:1: ( ( ruleQualifiedName ) )
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:451:1: ( ruleQualifiedName )
                    	    {
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:451:1: ( ruleQualifiedName )
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:452:3: ruleQualifiedName
                    	    {

                    	    			if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getGroupRule());
                    	    	        }
                    	            
                    	     
                    	    	        newCompositeNode(grammarAccess.getGroupAccess().getUsersUserCrossReference_3_3_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleQualifiedName_in_ruleGroup890);
                    	    ruleQualifiedName();

                    	    state._fsp--;

                    	     
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }
                    	    break;

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

                    otherlv_8=(Token)match(input,25,FOLLOW_25_in_ruleGroup904); 

                        	newLeafNode(otherlv_8, grammarAccess.getGroupAccess().getRightParenthesisKeyword_3_4());
                        

                    }
                    break;

            }

            otherlv_9=(Token)match(input,14,FOLLOW_14_in_ruleGroup918); 

                	newLeafNode(otherlv_9, grammarAccess.getGroupAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

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


    // $ANTLR start "entryRuleUser"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:481:1: entryRuleUser returns [EObject current=null] : iv_ruleUser= ruleUser EOF ;
    public final EObject entryRuleUser() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUser = null;


        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:482:2: (iv_ruleUser= ruleUser EOF )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:483:2: iv_ruleUser= ruleUser EOF
            {
             newCompositeNode(grammarAccess.getUserRule()); 
            pushFollow(FOLLOW_ruleUser_in_entryRuleUser954);
            iv_ruleUser=ruleUser();

            state._fsp--;

             current =iv_ruleUser; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleUser964); 

            }

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


    // $ANTLR start "ruleUser"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:490:1: ruleUser returns [EObject current=null] : (otherlv_0= 'User' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= '}' ) ;
    public final EObject ruleUser() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:493:28: ( (otherlv_0= 'User' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= '}' ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:494:1: (otherlv_0= 'User' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= '}' )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:494:1: (otherlv_0= 'User' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= '}' )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:494:3: otherlv_0= 'User' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= '}'
            {
            otherlv_0=(Token)match(input,26,FOLLOW_26_in_ruleUser1001); 

                	newLeafNode(otherlv_0, grammarAccess.getUserAccess().getUserKeyword_0());
                
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:498:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:499:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:499:1: (lv_name_1_0= ruleQualifiedName )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:500:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getUserAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleUser1022);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getUserRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleUser1034); 

                	newLeafNode(otherlv_2, grammarAccess.getUserAccess().getLeftCurlyBracketKeyword_2());
                
            otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleUser1046); 

                	newLeafNode(otherlv_3, grammarAccess.getUserAccess().getRightCurlyBracketKeyword_3());
                

            }


            }

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


    // $ANTLR start "entryRuleRoleAssignment"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:532:1: entryRuleRoleAssignment returns [EObject current=null] : iv_ruleRoleAssignment= ruleRoleAssignment EOF ;
    public final EObject entryRuleRoleAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRoleAssignment = null;


        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:533:2: (iv_ruleRoleAssignment= ruleRoleAssignment EOF )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:534:2: iv_ruleRoleAssignment= ruleRoleAssignment EOF
            {
             newCompositeNode(grammarAccess.getRoleAssignmentRule()); 
            pushFollow(FOLLOW_ruleRoleAssignment_in_entryRuleRoleAssignment1082);
            iv_ruleRoleAssignment=ruleRoleAssignment();

            state._fsp--;

             current =iv_ruleRoleAssignment; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRoleAssignment1092); 

            }

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


    // $ANTLR start "ruleRoleAssignment"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:541:1: ruleRoleAssignment returns [EObject current=null] : (otherlv_0= 'RoleAssignment' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'member' otherlv_4= '=' ( ( ruleQualifiedName ) ) (otherlv_6= 'roleDefinitionBindings' otherlv_7= '(' ( ( ruleQualifiedName ) ) (otherlv_9= ',' ( ( ruleQualifiedName ) ) )* otherlv_11= ')' )? otherlv_12= '}' ) ;
    public final EObject ruleRoleAssignment() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:544:28: ( (otherlv_0= 'RoleAssignment' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'member' otherlv_4= '=' ( ( ruleQualifiedName ) ) (otherlv_6= 'roleDefinitionBindings' otherlv_7= '(' ( ( ruleQualifiedName ) ) (otherlv_9= ',' ( ( ruleQualifiedName ) ) )* otherlv_11= ')' )? otherlv_12= '}' ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:545:1: (otherlv_0= 'RoleAssignment' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'member' otherlv_4= '=' ( ( ruleQualifiedName ) ) (otherlv_6= 'roleDefinitionBindings' otherlv_7= '(' ( ( ruleQualifiedName ) ) (otherlv_9= ',' ( ( ruleQualifiedName ) ) )* otherlv_11= ')' )? otherlv_12= '}' )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:545:1: (otherlv_0= 'RoleAssignment' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'member' otherlv_4= '=' ( ( ruleQualifiedName ) ) (otherlv_6= 'roleDefinitionBindings' otherlv_7= '(' ( ( ruleQualifiedName ) ) (otherlv_9= ',' ( ( ruleQualifiedName ) ) )* otherlv_11= ')' )? otherlv_12= '}' )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:545:3: otherlv_0= 'RoleAssignment' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'member' otherlv_4= '=' ( ( ruleQualifiedName ) ) (otherlv_6= 'roleDefinitionBindings' otherlv_7= '(' ( ( ruleQualifiedName ) ) (otherlv_9= ',' ( ( ruleQualifiedName ) ) )* otherlv_11= ')' )? otherlv_12= '}'
            {
            otherlv_0=(Token)match(input,27,FOLLOW_27_in_ruleRoleAssignment1129); 

                	newLeafNode(otherlv_0, grammarAccess.getRoleAssignmentAccess().getRoleAssignmentKeyword_0());
                
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:549:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:550:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:550:1: (lv_name_1_0= ruleQualifiedName )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:551:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getRoleAssignmentAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleRoleAssignment1150);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRoleAssignmentRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleRoleAssignment1162); 

                	newLeafNode(otherlv_2, grammarAccess.getRoleAssignmentAccess().getLeftCurlyBracketKeyword_2());
                
            otherlv_3=(Token)match(input,28,FOLLOW_28_in_ruleRoleAssignment1174); 

                	newLeafNode(otherlv_3, grammarAccess.getRoleAssignmentAccess().getMemberKeyword_3());
                
            otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleRoleAssignment1186); 

                	newLeafNode(otherlv_4, grammarAccess.getRoleAssignmentAccess().getEqualsSignKeyword_4());
                
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:579:1: ( ( ruleQualifiedName ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:580:1: ( ruleQualifiedName )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:580:1: ( ruleQualifiedName )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:581:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getRoleAssignmentRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getRoleAssignmentAccess().getMemberPrincipleCrossReference_5_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleRoleAssignment1209);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:594:2: (otherlv_6= 'roleDefinitionBindings' otherlv_7= '(' ( ( ruleQualifiedName ) ) (otherlv_9= ',' ( ( ruleQualifiedName ) ) )* otherlv_11= ')' )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==29) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:594:4: otherlv_6= 'roleDefinitionBindings' otherlv_7= '(' ( ( ruleQualifiedName ) ) (otherlv_9= ',' ( ( ruleQualifiedName ) ) )* otherlv_11= ')'
                    {
                    otherlv_6=(Token)match(input,29,FOLLOW_29_in_ruleRoleAssignment1222); 

                        	newLeafNode(otherlv_6, grammarAccess.getRoleAssignmentAccess().getRoleDefinitionBindingsKeyword_6_0());
                        
                    otherlv_7=(Token)match(input,23,FOLLOW_23_in_ruleRoleAssignment1234); 

                        	newLeafNode(otherlv_7, grammarAccess.getRoleAssignmentAccess().getLeftParenthesisKeyword_6_1());
                        
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:602:1: ( ( ruleQualifiedName ) )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:603:1: ( ruleQualifiedName )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:603:1: ( ruleQualifiedName )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:604:3: ruleQualifiedName
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getRoleAssignmentRule());
                    	        }
                            
                     
                    	        newCompositeNode(grammarAccess.getRoleAssignmentAccess().getRoleDefinitionBindingsRoleDefinitionCrossReference_6_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleRoleAssignment1257);
                    ruleQualifiedName();

                    state._fsp--;

                     
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:617:2: (otherlv_9= ',' ( ( ruleQualifiedName ) ) )*
                    loop13:
                    do {
                        int alt13=2;
                        int LA13_0 = input.LA(1);

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


                        switch (alt13) {
                    	case 1 :
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:617:4: otherlv_9= ',' ( ( ruleQualifiedName ) )
                    	    {
                    	    otherlv_9=(Token)match(input,24,FOLLOW_24_in_ruleRoleAssignment1270); 

                    	        	newLeafNode(otherlv_9, grammarAccess.getRoleAssignmentAccess().getCommaKeyword_6_3_0());
                    	        
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:621:1: ( ( ruleQualifiedName ) )
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:622:1: ( ruleQualifiedName )
                    	    {
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:622:1: ( ruleQualifiedName )
                    	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:623:3: ruleQualifiedName
                    	    {

                    	    			if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getRoleAssignmentRule());
                    	    	        }
                    	            
                    	     
                    	    	        newCompositeNode(grammarAccess.getRoleAssignmentAccess().getRoleDefinitionBindingsRoleDefinitionCrossReference_6_3_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleQualifiedName_in_ruleRoleAssignment1293);
                    	    ruleQualifiedName();

                    	    state._fsp--;

                    	     
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }
                    	    break;

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

                    otherlv_11=(Token)match(input,25,FOLLOW_25_in_ruleRoleAssignment1307); 

                        	newLeafNode(otherlv_11, grammarAccess.getRoleAssignmentAccess().getRightParenthesisKeyword_6_4());
                        

                    }
                    break;

            }

            otherlv_12=(Token)match(input,14,FOLLOW_14_in_ruleRoleAssignment1321); 

                	newLeafNode(otherlv_12, grammarAccess.getRoleAssignmentAccess().getRightCurlyBracketKeyword_7());
                

            }


            }

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


    // $ANTLR start "entryRuleRoleDefinition"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:652:1: entryRuleRoleDefinition returns [EObject current=null] : iv_ruleRoleDefinition= ruleRoleDefinition EOF ;
    public final EObject entryRuleRoleDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRoleDefinition = null;


        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:653:2: (iv_ruleRoleDefinition= ruleRoleDefinition EOF )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:654:2: iv_ruleRoleDefinition= ruleRoleDefinition EOF
            {
             newCompositeNode(grammarAccess.getRoleDefinitionRule()); 
            pushFollow(FOLLOW_ruleRoleDefinition_in_entryRuleRoleDefinition1357);
            iv_ruleRoleDefinition=ruleRoleDefinition();

            state._fsp--;

             current =iv_ruleRoleDefinition; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRoleDefinition1367); 

            }

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


    // $ANTLR start "ruleRoleDefinition"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:661:1: ruleRoleDefinition returns [EObject current=null] : (otherlv_0= 'RoleDefinition' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'basePermissions' otherlv_4= '{' ( (lv_basePermissions_5_0= ruleBasePermission ) ) (otherlv_6= ',' ( (lv_basePermissions_7_0= ruleBasePermission ) ) )* otherlv_8= '}' otherlv_9= '}' ) ;
    public final EObject ruleRoleDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        Enumerator lv_basePermissions_5_0 = null;

        Enumerator lv_basePermissions_7_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:664:28: ( (otherlv_0= 'RoleDefinition' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'basePermissions' otherlv_4= '{' ( (lv_basePermissions_5_0= ruleBasePermission ) ) (otherlv_6= ',' ( (lv_basePermissions_7_0= ruleBasePermission ) ) )* otherlv_8= '}' otherlv_9= '}' ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:665:1: (otherlv_0= 'RoleDefinition' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'basePermissions' otherlv_4= '{' ( (lv_basePermissions_5_0= ruleBasePermission ) ) (otherlv_6= ',' ( (lv_basePermissions_7_0= ruleBasePermission ) ) )* otherlv_8= '}' otherlv_9= '}' )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:665:1: (otherlv_0= 'RoleDefinition' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'basePermissions' otherlv_4= '{' ( (lv_basePermissions_5_0= ruleBasePermission ) ) (otherlv_6= ',' ( (lv_basePermissions_7_0= ruleBasePermission ) ) )* otherlv_8= '}' otherlv_9= '}' )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:665:3: otherlv_0= 'RoleDefinition' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'basePermissions' otherlv_4= '{' ( (lv_basePermissions_5_0= ruleBasePermission ) ) (otherlv_6= ',' ( (lv_basePermissions_7_0= ruleBasePermission ) ) )* otherlv_8= '}' otherlv_9= '}'
            {
            otherlv_0=(Token)match(input,30,FOLLOW_30_in_ruleRoleDefinition1404); 

                	newLeafNode(otherlv_0, grammarAccess.getRoleDefinitionAccess().getRoleDefinitionKeyword_0());
                
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:669:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:670:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:670:1: (lv_name_1_0= ruleQualifiedName )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:671:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getRoleDefinitionAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleRoleDefinition1425);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRoleDefinitionRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleRoleDefinition1437); 

                	newLeafNode(otherlv_2, grammarAccess.getRoleDefinitionAccess().getLeftCurlyBracketKeyword_2());
                
            otherlv_3=(Token)match(input,31,FOLLOW_31_in_ruleRoleDefinition1449); 

                	newLeafNode(otherlv_3, grammarAccess.getRoleDefinitionAccess().getBasePermissionsKeyword_3());
                
            otherlv_4=(Token)match(input,12,FOLLOW_12_in_ruleRoleDefinition1461); 

                	newLeafNode(otherlv_4, grammarAccess.getRoleDefinitionAccess().getLeftCurlyBracketKeyword_4());
                
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:699:1: ( (lv_basePermissions_5_0= ruleBasePermission ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:700:1: (lv_basePermissions_5_0= ruleBasePermission )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:700:1: (lv_basePermissions_5_0= ruleBasePermission )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:701:3: lv_basePermissions_5_0= ruleBasePermission
            {
             
            	        newCompositeNode(grammarAccess.getRoleDefinitionAccess().getBasePermissionsBasePermissionEnumRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleBasePermission_in_ruleRoleDefinition1482);
            lv_basePermissions_5_0=ruleBasePermission();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRoleDefinitionRule());
            	        }
                   		add(
                   			current, 
                   			"basePermissions",
                    		lv_basePermissions_5_0, 
                    		"BasePermission");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:717:2: (otherlv_6= ',' ( (lv_basePermissions_7_0= ruleBasePermission ) ) )*
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( (LA15_0==24) ) {
                    alt15=1;
                }


                switch (alt15) {
            	case 1 :
            	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:717:4: otherlv_6= ',' ( (lv_basePermissions_7_0= ruleBasePermission ) )
            	    {
            	    otherlv_6=(Token)match(input,24,FOLLOW_24_in_ruleRoleDefinition1495); 

            	        	newLeafNode(otherlv_6, grammarAccess.getRoleDefinitionAccess().getCommaKeyword_6_0());
            	        
            	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:721:1: ( (lv_basePermissions_7_0= ruleBasePermission ) )
            	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:722:1: (lv_basePermissions_7_0= ruleBasePermission )
            	    {
            	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:722:1: (lv_basePermissions_7_0= ruleBasePermission )
            	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:723:3: lv_basePermissions_7_0= ruleBasePermission
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getRoleDefinitionAccess().getBasePermissionsBasePermissionEnumRuleCall_6_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleBasePermission_in_ruleRoleDefinition1516);
            	    lv_basePermissions_7_0=ruleBasePermission();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getRoleDefinitionRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"basePermissions",
            	            		lv_basePermissions_7_0, 
            	            		"BasePermission");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

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

            otherlv_8=(Token)match(input,14,FOLLOW_14_in_ruleRoleDefinition1530); 

                	newLeafNode(otherlv_8, grammarAccess.getRoleDefinitionAccess().getRightCurlyBracketKeyword_7());
                
            otherlv_9=(Token)match(input,14,FOLLOW_14_in_ruleRoleDefinition1542); 

                	newLeafNode(otherlv_9, grammarAccess.getRoleDefinitionAccess().getRightCurlyBracketKeyword_8());
                

            }


            }

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


    // $ANTLR start "entryRuleQualifiedName"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:755:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:756:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:757:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName1579);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;

             current =iv_ruleQualifiedName.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName1590); 

            }

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


    // $ANTLR start "ruleQualifiedName"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:764:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:767:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:768:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:768:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:768:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName1630); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0()); 
                
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:775:1: (kw= '.' this_ID_2= RULE_ID )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==32) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:776:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,32,FOLLOW_32_in_ruleQualifiedName1649); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName1664); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "ruleBasePermission"
    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:796:1: ruleBasePermission returns [Enumerator current=null] : ( (enumLiteral_0= 'ViewListItems' ) | (enumLiteral_1= 'AddListItems' ) | (enumLiteral_2= 'EditListItems' ) | (enumLiteral_3= 'DeleteListItems' ) | (enumLiteral_4= 'ApproveItems' ) | (enumLiteral_5= 'OpenItems' ) | (enumLiteral_6= 'ViewVersions' ) | (enumLiteral_7= 'DeleteVersions' ) | (enumLiteral_8= 'CancelCheckout' ) | (enumLiteral_9= 'ManagePersonalViews' ) | (enumLiteral_10= 'ManageLists' ) | (enumLiteral_11= 'ViewFormPages' ) | (enumLiteral_12= 'Open' ) | (enumLiteral_13= 'AddAndCustomizePages' ) | (enumLiteral_14= 'ApplyThemeAndBorder' ) | (enumLiteral_15= 'CreateSSCSite' ) | (enumLiteral_16= 'BrowseDirectories' ) | (enumLiteral_17= 'BrowseUserInfo' ) | (enumLiteral_18= 'AddDelPrivateWebParts' ) | (enumLiteral_19= 'UpdatePersonalWebParts' ) | (enumLiteral_20= 'UseClientIntegration' ) | (enumLiteral_21= 'UseRemoteAPIs' ) | (enumLiteral_22= 'CreateAlerts' ) | (enumLiteral_23= 'EditMyUserInfo' ) | (enumLiteral_24= 'FullMask' ) ) ;
    public final Enumerator ruleBasePermission() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;
        Token enumLiteral_6=null;
        Token enumLiteral_7=null;
        Token enumLiteral_8=null;
        Token enumLiteral_9=null;
        Token enumLiteral_10=null;
        Token enumLiteral_11=null;
        Token enumLiteral_12=null;
        Token enumLiteral_13=null;
        Token enumLiteral_14=null;
        Token enumLiteral_15=null;
        Token enumLiteral_16=null;
        Token enumLiteral_17=null;
        Token enumLiteral_18=null;
        Token enumLiteral_19=null;
        Token enumLiteral_20=null;
        Token enumLiteral_21=null;
        Token enumLiteral_22=null;
        Token enumLiteral_23=null;
        Token enumLiteral_24=null;

         enterRule(); 
        try {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:798:28: ( ( (enumLiteral_0= 'ViewListItems' ) | (enumLiteral_1= 'AddListItems' ) | (enumLiteral_2= 'EditListItems' ) | (enumLiteral_3= 'DeleteListItems' ) | (enumLiteral_4= 'ApproveItems' ) | (enumLiteral_5= 'OpenItems' ) | (enumLiteral_6= 'ViewVersions' ) | (enumLiteral_7= 'DeleteVersions' ) | (enumLiteral_8= 'CancelCheckout' ) | (enumLiteral_9= 'ManagePersonalViews' ) | (enumLiteral_10= 'ManageLists' ) | (enumLiteral_11= 'ViewFormPages' ) | (enumLiteral_12= 'Open' ) | (enumLiteral_13= 'AddAndCustomizePages' ) | (enumLiteral_14= 'ApplyThemeAndBorder' ) | (enumLiteral_15= 'CreateSSCSite' ) | (enumLiteral_16= 'BrowseDirectories' ) | (enumLiteral_17= 'BrowseUserInfo' ) | (enumLiteral_18= 'AddDelPrivateWebParts' ) | (enumLiteral_19= 'UpdatePersonalWebParts' ) | (enumLiteral_20= 'UseClientIntegration' ) | (enumLiteral_21= 'UseRemoteAPIs' ) | (enumLiteral_22= 'CreateAlerts' ) | (enumLiteral_23= 'EditMyUserInfo' ) | (enumLiteral_24= 'FullMask' ) ) )
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:799:1: ( (enumLiteral_0= 'ViewListItems' ) | (enumLiteral_1= 'AddListItems' ) | (enumLiteral_2= 'EditListItems' ) | (enumLiteral_3= 'DeleteListItems' ) | (enumLiteral_4= 'ApproveItems' ) | (enumLiteral_5= 'OpenItems' ) | (enumLiteral_6= 'ViewVersions' ) | (enumLiteral_7= 'DeleteVersions' ) | (enumLiteral_8= 'CancelCheckout' ) | (enumLiteral_9= 'ManagePersonalViews' ) | (enumLiteral_10= 'ManageLists' ) | (enumLiteral_11= 'ViewFormPages' ) | (enumLiteral_12= 'Open' ) | (enumLiteral_13= 'AddAndCustomizePages' ) | (enumLiteral_14= 'ApplyThemeAndBorder' ) | (enumLiteral_15= 'CreateSSCSite' ) | (enumLiteral_16= 'BrowseDirectories' ) | (enumLiteral_17= 'BrowseUserInfo' ) | (enumLiteral_18= 'AddDelPrivateWebParts' ) | (enumLiteral_19= 'UpdatePersonalWebParts' ) | (enumLiteral_20= 'UseClientIntegration' ) | (enumLiteral_21= 'UseRemoteAPIs' ) | (enumLiteral_22= 'CreateAlerts' ) | (enumLiteral_23= 'EditMyUserInfo' ) | (enumLiteral_24= 'FullMask' ) )
            {
            // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:799:1: ( (enumLiteral_0= 'ViewListItems' ) | (enumLiteral_1= 'AddListItems' ) | (enumLiteral_2= 'EditListItems' ) | (enumLiteral_3= 'DeleteListItems' ) | (enumLiteral_4= 'ApproveItems' ) | (enumLiteral_5= 'OpenItems' ) | (enumLiteral_6= 'ViewVersions' ) | (enumLiteral_7= 'DeleteVersions' ) | (enumLiteral_8= 'CancelCheckout' ) | (enumLiteral_9= 'ManagePersonalViews' ) | (enumLiteral_10= 'ManageLists' ) | (enumLiteral_11= 'ViewFormPages' ) | (enumLiteral_12= 'Open' ) | (enumLiteral_13= 'AddAndCustomizePages' ) | (enumLiteral_14= 'ApplyThemeAndBorder' ) | (enumLiteral_15= 'CreateSSCSite' ) | (enumLiteral_16= 'BrowseDirectories' ) | (enumLiteral_17= 'BrowseUserInfo' ) | (enumLiteral_18= 'AddDelPrivateWebParts' ) | (enumLiteral_19= 'UpdatePersonalWebParts' ) | (enumLiteral_20= 'UseClientIntegration' ) | (enumLiteral_21= 'UseRemoteAPIs' ) | (enumLiteral_22= 'CreateAlerts' ) | (enumLiteral_23= 'EditMyUserInfo' ) | (enumLiteral_24= 'FullMask' ) )
            int alt17=25;
            switch ( input.LA(1) ) {
            case 33:
                {
                alt17=1;
                }
                break;
            case 34:
                {
                alt17=2;
                }
                break;
            case 35:
                {
                alt17=3;
                }
                break;
            case 36:
                {
                alt17=4;
                }
                break;
            case 37:
                {
                alt17=5;
                }
                break;
            case 38:
                {
                alt17=6;
                }
                break;
            case 39:
                {
                alt17=7;
                }
                break;
            case 40:
                {
                alt17=8;
                }
                break;
            case 41:
                {
                alt17=9;
                }
                break;
            case 42:
                {
                alt17=10;
                }
                break;
            case 43:
                {
                alt17=11;
                }
                break;
            case 44:
                {
                alt17=12;
                }
                break;
            case 45:
                {
                alt17=13;
                }
                break;
            case 46:
                {
                alt17=14;
                }
                break;
            case 47:
                {
                alt17=15;
                }
                break;
            case 48:
                {
                alt17=16;
                }
                break;
            case 49:
                {
                alt17=17;
                }
                break;
            case 50:
                {
                alt17=18;
                }
                break;
            case 51:
                {
                alt17=19;
                }
                break;
            case 52:
                {
                alt17=20;
                }
                break;
            case 53:
                {
                alt17=21;
                }
                break;
            case 54:
                {
                alt17=22;
                }
                break;
            case 55:
                {
                alt17=23;
                }
                break;
            case 56:
                {
                alt17=24;
                }
                break;
            case 57:
                {
                alt17=25;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }

            switch (alt17) {
                case 1 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:799:2: (enumLiteral_0= 'ViewListItems' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:799:2: (enumLiteral_0= 'ViewListItems' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:799:4: enumLiteral_0= 'ViewListItems'
                    {
                    enumLiteral_0=(Token)match(input,33,FOLLOW_33_in_ruleBasePermission1725); 

                            current = grammarAccess.getBasePermissionAccess().getViewListItemsEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getBasePermissionAccess().getViewListItemsEnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:805:6: (enumLiteral_1= 'AddListItems' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:805:6: (enumLiteral_1= 'AddListItems' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:805:8: enumLiteral_1= 'AddListItems'
                    {
                    enumLiteral_1=(Token)match(input,34,FOLLOW_34_in_ruleBasePermission1742); 

                            current = grammarAccess.getBasePermissionAccess().getAddListItemsEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getBasePermissionAccess().getAddListItemsEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:811:6: (enumLiteral_2= 'EditListItems' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:811:6: (enumLiteral_2= 'EditListItems' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:811:8: enumLiteral_2= 'EditListItems'
                    {
                    enumLiteral_2=(Token)match(input,35,FOLLOW_35_in_ruleBasePermission1759); 

                            current = grammarAccess.getBasePermissionAccess().getEditListItemsEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_2, grammarAccess.getBasePermissionAccess().getEditListItemsEnumLiteralDeclaration_2()); 
                        

                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:817:6: (enumLiteral_3= 'DeleteListItems' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:817:6: (enumLiteral_3= 'DeleteListItems' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:817:8: enumLiteral_3= 'DeleteListItems'
                    {
                    enumLiteral_3=(Token)match(input,36,FOLLOW_36_in_ruleBasePermission1776); 

                            current = grammarAccess.getBasePermissionAccess().getDeleteListItemsEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_3, grammarAccess.getBasePermissionAccess().getDeleteListItemsEnumLiteralDeclaration_3()); 
                        

                    }


                    }
                    break;
                case 5 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:823:6: (enumLiteral_4= 'ApproveItems' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:823:6: (enumLiteral_4= 'ApproveItems' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:823:8: enumLiteral_4= 'ApproveItems'
                    {
                    enumLiteral_4=(Token)match(input,37,FOLLOW_37_in_ruleBasePermission1793); 

                            current = grammarAccess.getBasePermissionAccess().getApproveItemsEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_4, grammarAccess.getBasePermissionAccess().getApproveItemsEnumLiteralDeclaration_4()); 
                        

                    }


                    }
                    break;
                case 6 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:829:6: (enumLiteral_5= 'OpenItems' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:829:6: (enumLiteral_5= 'OpenItems' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:829:8: enumLiteral_5= 'OpenItems'
                    {
                    enumLiteral_5=(Token)match(input,38,FOLLOW_38_in_ruleBasePermission1810); 

                            current = grammarAccess.getBasePermissionAccess().getOpenItemsEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_5, grammarAccess.getBasePermissionAccess().getOpenItemsEnumLiteralDeclaration_5()); 
                        

                    }


                    }
                    break;
                case 7 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:835:6: (enumLiteral_6= 'ViewVersions' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:835:6: (enumLiteral_6= 'ViewVersions' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:835:8: enumLiteral_6= 'ViewVersions'
                    {
                    enumLiteral_6=(Token)match(input,39,FOLLOW_39_in_ruleBasePermission1827); 

                            current = grammarAccess.getBasePermissionAccess().getViewVersionsEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_6, grammarAccess.getBasePermissionAccess().getViewVersionsEnumLiteralDeclaration_6()); 
                        

                    }


                    }
                    break;
                case 8 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:841:6: (enumLiteral_7= 'DeleteVersions' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:841:6: (enumLiteral_7= 'DeleteVersions' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:841:8: enumLiteral_7= 'DeleteVersions'
                    {
                    enumLiteral_7=(Token)match(input,40,FOLLOW_40_in_ruleBasePermission1844); 

                            current = grammarAccess.getBasePermissionAccess().getDeleteVersionsEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_7, grammarAccess.getBasePermissionAccess().getDeleteVersionsEnumLiteralDeclaration_7()); 
                        

                    }


                    }
                    break;
                case 9 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:847:6: (enumLiteral_8= 'CancelCheckout' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:847:6: (enumLiteral_8= 'CancelCheckout' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:847:8: enumLiteral_8= 'CancelCheckout'
                    {
                    enumLiteral_8=(Token)match(input,41,FOLLOW_41_in_ruleBasePermission1861); 

                            current = grammarAccess.getBasePermissionAccess().getCancelCheckoutEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_8, grammarAccess.getBasePermissionAccess().getCancelCheckoutEnumLiteralDeclaration_8()); 
                        

                    }


                    }
                    break;
                case 10 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:853:6: (enumLiteral_9= 'ManagePersonalViews' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:853:6: (enumLiteral_9= 'ManagePersonalViews' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:853:8: enumLiteral_9= 'ManagePersonalViews'
                    {
                    enumLiteral_9=(Token)match(input,42,FOLLOW_42_in_ruleBasePermission1878); 

                            current = grammarAccess.getBasePermissionAccess().getManagePersonalViewsEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_9, grammarAccess.getBasePermissionAccess().getManagePersonalViewsEnumLiteralDeclaration_9()); 
                        

                    }


                    }
                    break;
                case 11 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:859:6: (enumLiteral_10= 'ManageLists' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:859:6: (enumLiteral_10= 'ManageLists' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:859:8: enumLiteral_10= 'ManageLists'
                    {
                    enumLiteral_10=(Token)match(input,43,FOLLOW_43_in_ruleBasePermission1895); 

                            current = grammarAccess.getBasePermissionAccess().getManageListsEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_10, grammarAccess.getBasePermissionAccess().getManageListsEnumLiteralDeclaration_10()); 
                        

                    }


                    }
                    break;
                case 12 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:865:6: (enumLiteral_11= 'ViewFormPages' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:865:6: (enumLiteral_11= 'ViewFormPages' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:865:8: enumLiteral_11= 'ViewFormPages'
                    {
                    enumLiteral_11=(Token)match(input,44,FOLLOW_44_in_ruleBasePermission1912); 

                            current = grammarAccess.getBasePermissionAccess().getViewFormPagesEnumLiteralDeclaration_11().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_11, grammarAccess.getBasePermissionAccess().getViewFormPagesEnumLiteralDeclaration_11()); 
                        

                    }


                    }
                    break;
                case 13 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:871:6: (enumLiteral_12= 'Open' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:871:6: (enumLiteral_12= 'Open' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:871:8: enumLiteral_12= 'Open'
                    {
                    enumLiteral_12=(Token)match(input,45,FOLLOW_45_in_ruleBasePermission1929); 

                            current = grammarAccess.getBasePermissionAccess().getOpenEnumLiteralDeclaration_12().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_12, grammarAccess.getBasePermissionAccess().getOpenEnumLiteralDeclaration_12()); 
                        

                    }


                    }
                    break;
                case 14 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:877:6: (enumLiteral_13= 'AddAndCustomizePages' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:877:6: (enumLiteral_13= 'AddAndCustomizePages' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:877:8: enumLiteral_13= 'AddAndCustomizePages'
                    {
                    enumLiteral_13=(Token)match(input,46,FOLLOW_46_in_ruleBasePermission1946); 

                            current = grammarAccess.getBasePermissionAccess().getAddAndCustomizePagesEnumLiteralDeclaration_13().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_13, grammarAccess.getBasePermissionAccess().getAddAndCustomizePagesEnumLiteralDeclaration_13()); 
                        

                    }


                    }
                    break;
                case 15 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:883:6: (enumLiteral_14= 'ApplyThemeAndBorder' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:883:6: (enumLiteral_14= 'ApplyThemeAndBorder' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:883:8: enumLiteral_14= 'ApplyThemeAndBorder'
                    {
                    enumLiteral_14=(Token)match(input,47,FOLLOW_47_in_ruleBasePermission1963); 

                            current = grammarAccess.getBasePermissionAccess().getApplyThemeAndBorderEnumLiteralDeclaration_14().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_14, grammarAccess.getBasePermissionAccess().getApplyThemeAndBorderEnumLiteralDeclaration_14()); 
                        

                    }


                    }
                    break;
                case 16 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:889:6: (enumLiteral_15= 'CreateSSCSite' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:889:6: (enumLiteral_15= 'CreateSSCSite' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:889:8: enumLiteral_15= 'CreateSSCSite'
                    {
                    enumLiteral_15=(Token)match(input,48,FOLLOW_48_in_ruleBasePermission1980); 

                            current = grammarAccess.getBasePermissionAccess().getCreateSSCSiteEnumLiteralDeclaration_15().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_15, grammarAccess.getBasePermissionAccess().getCreateSSCSiteEnumLiteralDeclaration_15()); 
                        

                    }


                    }
                    break;
                case 17 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:895:6: (enumLiteral_16= 'BrowseDirectories' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:895:6: (enumLiteral_16= 'BrowseDirectories' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:895:8: enumLiteral_16= 'BrowseDirectories'
                    {
                    enumLiteral_16=(Token)match(input,49,FOLLOW_49_in_ruleBasePermission1997); 

                            current = grammarAccess.getBasePermissionAccess().getBrowseDirectoriesEnumLiteralDeclaration_16().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_16, grammarAccess.getBasePermissionAccess().getBrowseDirectoriesEnumLiteralDeclaration_16()); 
                        

                    }


                    }
                    break;
                case 18 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:901:6: (enumLiteral_17= 'BrowseUserInfo' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:901:6: (enumLiteral_17= 'BrowseUserInfo' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:901:8: enumLiteral_17= 'BrowseUserInfo'
                    {
                    enumLiteral_17=(Token)match(input,50,FOLLOW_50_in_ruleBasePermission2014); 

                            current = grammarAccess.getBasePermissionAccess().getBrowseUserInfoEnumLiteralDeclaration_17().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_17, grammarAccess.getBasePermissionAccess().getBrowseUserInfoEnumLiteralDeclaration_17()); 
                        

                    }


                    }
                    break;
                case 19 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:907:6: (enumLiteral_18= 'AddDelPrivateWebParts' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:907:6: (enumLiteral_18= 'AddDelPrivateWebParts' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:907:8: enumLiteral_18= 'AddDelPrivateWebParts'
                    {
                    enumLiteral_18=(Token)match(input,51,FOLLOW_51_in_ruleBasePermission2031); 

                            current = grammarAccess.getBasePermissionAccess().getAddDelPrivateWebPartsEnumLiteralDeclaration_18().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_18, grammarAccess.getBasePermissionAccess().getAddDelPrivateWebPartsEnumLiteralDeclaration_18()); 
                        

                    }


                    }
                    break;
                case 20 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:913:6: (enumLiteral_19= 'UpdatePersonalWebParts' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:913:6: (enumLiteral_19= 'UpdatePersonalWebParts' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:913:8: enumLiteral_19= 'UpdatePersonalWebParts'
                    {
                    enumLiteral_19=(Token)match(input,52,FOLLOW_52_in_ruleBasePermission2048); 

                            current = grammarAccess.getBasePermissionAccess().getUpdatePersonalWebPartsEnumLiteralDeclaration_19().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_19, grammarAccess.getBasePermissionAccess().getUpdatePersonalWebPartsEnumLiteralDeclaration_19()); 
                        

                    }


                    }
                    break;
                case 21 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:919:6: (enumLiteral_20= 'UseClientIntegration' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:919:6: (enumLiteral_20= 'UseClientIntegration' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:919:8: enumLiteral_20= 'UseClientIntegration'
                    {
                    enumLiteral_20=(Token)match(input,53,FOLLOW_53_in_ruleBasePermission2065); 

                            current = grammarAccess.getBasePermissionAccess().getUseClientIntegrationEnumLiteralDeclaration_20().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_20, grammarAccess.getBasePermissionAccess().getUseClientIntegrationEnumLiteralDeclaration_20()); 
                        

                    }


                    }
                    break;
                case 22 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:925:6: (enumLiteral_21= 'UseRemoteAPIs' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:925:6: (enumLiteral_21= 'UseRemoteAPIs' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:925:8: enumLiteral_21= 'UseRemoteAPIs'
                    {
                    enumLiteral_21=(Token)match(input,54,FOLLOW_54_in_ruleBasePermission2082); 

                            current = grammarAccess.getBasePermissionAccess().getUseRemoteAPIsEnumLiteralDeclaration_21().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_21, grammarAccess.getBasePermissionAccess().getUseRemoteAPIsEnumLiteralDeclaration_21()); 
                        

                    }


                    }
                    break;
                case 23 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:931:6: (enumLiteral_22= 'CreateAlerts' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:931:6: (enumLiteral_22= 'CreateAlerts' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:931:8: enumLiteral_22= 'CreateAlerts'
                    {
                    enumLiteral_22=(Token)match(input,55,FOLLOW_55_in_ruleBasePermission2099); 

                            current = grammarAccess.getBasePermissionAccess().getCreateAlertsEnumLiteralDeclaration_22().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_22, grammarAccess.getBasePermissionAccess().getCreateAlertsEnumLiteralDeclaration_22()); 
                        

                    }


                    }
                    break;
                case 24 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:937:6: (enumLiteral_23= 'EditMyUserInfo' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:937:6: (enumLiteral_23= 'EditMyUserInfo' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:937:8: enumLiteral_23= 'EditMyUserInfo'
                    {
                    enumLiteral_23=(Token)match(input,56,FOLLOW_56_in_ruleBasePermission2116); 

                            current = grammarAccess.getBasePermissionAccess().getEditMyUserInfoEnumLiteralDeclaration_23().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_23, grammarAccess.getBasePermissionAccess().getEditMyUserInfoEnumLiteralDeclaration_23()); 
                        

                    }


                    }
                    break;
                case 25 :
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:943:6: (enumLiteral_24= 'FullMask' )
                    {
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:943:6: (enumLiteral_24= 'FullMask' )
                    // ../org.xtext.example.mydsl2/src-gen/org/xtext/example/mydsl2/parser/antlr/internal/InternalMyDsl2.g:943:8: enumLiteral_24= 'FullMask'
                    {
                    enumLiteral_24=(Token)match(input,57,FOLLOW_57_in_ruleBasePermission2133); 

                            current = grammarAccess.getBasePermissionAccess().getFullMaskEnumLiteralDeclaration_24().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_24, grammarAccess.getBasePermissionAccess().getFullMaskEnumLiteralDeclaration_24()); 
                        

                    }


                    }
                    break;

            }


            }

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

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleUserModel_in_entryRuleUserModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUserModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleUserModel122 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleUserModel143 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleUserModel155 = new BitSet(new long[]{0x000000000000E000L});
    public static final BitSet FOLLOW_13_in_ruleUserModel168 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleUserModel180 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_ruleUser_in_ruleUserModel201 = new BitSet(new long[]{0x0000000004004000L});
    public static final BitSet FOLLOW_ruleUser_in_ruleUserModel222 = new BitSet(new long[]{0x0000000004004000L});
    public static final BitSet FOLLOW_14_in_ruleUserModel235 = new BitSet(new long[]{0x000000000000C000L});
    public static final BitSet FOLLOW_15_in_ruleUserModel250 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleUserModel262 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_ruleSitePermission_in_ruleUserModel283 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_ruleSitePermission_in_ruleUserModel304 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_14_in_ruleUserModel317 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleUserModel331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSitePermission_in_entryRuleSitePermission367 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSitePermission377 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleSitePermission414 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleSitePermission435 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleSitePermission447 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleSitePermission459 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleSitePermission471 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleSitePermission488 = new BitSet(new long[]{0x0000000000384000L});
    public static final BitSet FOLLOW_19_in_ruleSitePermission506 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleSitePermission518 = new BitSet(new long[]{0x0000000000404000L});
    public static final BitSet FOLLOW_ruleGroup_in_ruleSitePermission539 = new BitSet(new long[]{0x0000000000404000L});
    public static final BitSet FOLLOW_14_in_ruleSitePermission552 = new BitSet(new long[]{0x0000000000304000L});
    public static final BitSet FOLLOW_20_in_ruleSitePermission567 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleSitePermission579 = new BitSet(new long[]{0x0000000040004000L});
    public static final BitSet FOLLOW_ruleRoleDefinition_in_ruleSitePermission600 = new BitSet(new long[]{0x0000000040004000L});
    public static final BitSet FOLLOW_14_in_ruleSitePermission613 = new BitSet(new long[]{0x0000000000204000L});
    public static final BitSet FOLLOW_21_in_ruleSitePermission628 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleSitePermission640 = new BitSet(new long[]{0x0000000008004000L});
    public static final BitSet FOLLOW_ruleRoleAssignment_in_ruleSitePermission661 = new BitSet(new long[]{0x0000000008004000L});
    public static final BitSet FOLLOW_14_in_ruleSitePermission674 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleSitePermission688 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGroup_in_entryRuleGroup726 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGroup736 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleGroup773 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleGroup794 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleGroup806 = new BitSet(new long[]{0x0000000000006000L});
    public static final BitSet FOLLOW_13_in_ruleGroup819 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleGroup831 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleGroup854 = new BitSet(new long[]{0x0000000003000000L});
    public static final BitSet FOLLOW_24_in_ruleGroup867 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleGroup890 = new BitSet(new long[]{0x0000000003000000L});
    public static final BitSet FOLLOW_25_in_ruleGroup904 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleGroup918 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUser_in_entryRuleUser954 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUser964 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleUser1001 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleUser1022 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleUser1034 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleUser1046 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRoleAssignment_in_entryRuleRoleAssignment1082 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRoleAssignment1092 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleRoleAssignment1129 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleRoleAssignment1150 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleRoleAssignment1162 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleRoleAssignment1174 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleRoleAssignment1186 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleRoleAssignment1209 = new BitSet(new long[]{0x0000000020004000L});
    public static final BitSet FOLLOW_29_in_ruleRoleAssignment1222 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleRoleAssignment1234 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleRoleAssignment1257 = new BitSet(new long[]{0x0000000003000000L});
    public static final BitSet FOLLOW_24_in_ruleRoleAssignment1270 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleRoleAssignment1293 = new BitSet(new long[]{0x0000000003000000L});
    public static final BitSet FOLLOW_25_in_ruleRoleAssignment1307 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleRoleAssignment1321 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRoleDefinition_in_entryRuleRoleDefinition1357 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRoleDefinition1367 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleRoleDefinition1404 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleRoleDefinition1425 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleRoleDefinition1437 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleRoleDefinition1449 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleRoleDefinition1461 = new BitSet(new long[]{0x03FFFFFE00000000L});
    public static final BitSet FOLLOW_ruleBasePermission_in_ruleRoleDefinition1482 = new BitSet(new long[]{0x0000000001004000L});
    public static final BitSet FOLLOW_24_in_ruleRoleDefinition1495 = new BitSet(new long[]{0x03FFFFFE00000000L});
    public static final BitSet FOLLOW_ruleBasePermission_in_ruleRoleDefinition1516 = new BitSet(new long[]{0x0000000001004000L});
    public static final BitSet FOLLOW_14_in_ruleRoleDefinition1530 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleRoleDefinition1542 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName1579 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName1590 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName1630 = new BitSet(new long[]{0x0000000100000002L});
    public static final BitSet FOLLOW_32_in_ruleQualifiedName1649 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName1664 = new BitSet(new long[]{0x0000000100000002L});
    public static final BitSet FOLLOW_33_in_ruleBasePermission1725 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleBasePermission1742 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleBasePermission1759 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleBasePermission1776 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleBasePermission1793 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleBasePermission1810 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruleBasePermission1827 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleBasePermission1844 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_ruleBasePermission1861 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleBasePermission1878 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleBasePermission1895 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_ruleBasePermission1912 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleBasePermission1929 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleBasePermission1946 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_ruleBasePermission1963 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleBasePermission1980 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleBasePermission1997 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_50_in_ruleBasePermission2014 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_51_in_ruleBasePermission2031 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleBasePermission2048 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleBasePermission2065 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_54_in_ruleBasePermission2082 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_55_in_ruleBasePermission2099 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_56_in_ruleBasePermission2116 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_57_in_ruleBasePermission2133 = new BitSet(new long[]{0x0000000000000002L});

}