InternalXtext.g:1562:1: ruleRuleCall returns [EObject current=null] : ( ( ( ruleRuleID ) ) (otherlv_1= '<' ( (lv_arguments_2_0= ruleNamedArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleNamedArgument ) ) )* otherlv_5= '>' )? ) ;
331720
public final EObject ruleRuleCall() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_arguments_2_0 = null;

        EObject lv_arguments_4_0 = null;



        	enterRule();

        try {
            // InternalXtext.g:1568:2: ( ( ( ( ruleRuleID ) ) (otherlv_1= '<' ( (lv_arguments_2_0= ruleNamedArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleNamedArgument ) ) )* otherlv_5= '>' )? ) )
            // InternalXtext.g:1569:2: ( ( ( ruleRuleID ) ) (otherlv_1= '<' ( (lv_arguments_2_0= ruleNamedArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleNamedArgument ) ) )* otherlv_5= '>' )? )
            {
            // InternalXtext.g:1569:2: ( ( ( ruleRuleID ) ) (otherlv_1= '<' ( (lv_arguments_2_0= ruleNamedArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleNamedArgument ) ) )* otherlv_5= '>' )? )
            // InternalXtext.g:1570:3: ( ( ruleRuleID ) ) (otherlv_1= '<' ( (lv_arguments_2_0= ruleNamedArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleNamedArgument ) ) )* otherlv_5= '>' )?
            {
            // InternalXtext.g:1570:3: ( ( ruleRuleID ) )
            // InternalXtext.g:1571:4: ( ruleRuleID )
            {
            // InternalXtext.g:1571:4: ( ruleRuleID )
            // InternalXtext.g:1572:5: ruleRuleID
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getRuleCallRule());
            					}
            				

            					newCompositeNode(grammarAccess.getRuleCallAccess().getRuleAbstractRuleCrossReference_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_21);
            ruleRuleID();

            state._fsp--;


            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalXtext.g:1586:3: (otherlv_1= '<' ( (lv_arguments_2_0= ruleNamedArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleNamedArgument ) ) )* otherlv_5= '>' )?
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( (LA41_0==27) ) {
                alt41=1;
            }
            switch (alt41) {
                case 1 :
                    // InternalXtext.g:1587:4: otherlv_1= '<' ( (lv_arguments_2_0= ruleNamedArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleNamedArgument ) ) )* otherlv_5= '>'
                    {
                    otherlv_1=(Token)match(input,27,FollowSets000.FOLLOW_26); 

                    				newLeafNode(otherlv_1, grammarAccess.getRuleCallAccess().getLessThanSignKeyword_1_0());
                    			
                    // InternalXtext.g:1591:4: ( (lv_arguments_2_0= ruleNamedArgument ) )
                    // InternalXtext.g:1592:5: (lv_arguments_2_0= ruleNamedArgument )
                    {
                    // InternalXtext.g:1592:5: (lv_arguments_2_0= ruleNamedArgument )
                    // InternalXtext.g:1593:6: lv_arguments_2_0= ruleNamedArgument
                    {

                    						newCompositeNode(grammarAccess.getRuleCallAccess().getArgumentsNamedArgumentParserRuleCall_1_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_23);
                    lv_arguments_2_0=ruleNamedArgument();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getRuleCallRule());
                    						}
                    						add(
                    							current,
                    							"arguments",
                    							lv_arguments_2_0,
                    							"org.eclipse.xtext.Xtext.NamedArgument");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalXtext.g:1610:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleNamedArgument ) ) )*
                    loop40:
                    do {
                        int alt40=2;
                        int LA40_0 = input.LA(1);

                        if ( (LA40_0==13) ) {
                            alt40=1;
                        }


                        switch (alt40) {
                    	case 1 :
                    	    // InternalXtext.g:1611:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleNamedArgument ) )
                    	    {
                    	    otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_26); 

                    	    					newLeafNode(otherlv_3, grammarAccess.getRuleCallAccess().getCommaKeyword_1_2_0());
                    	    				
                    	    // InternalXtext.g:1615:5: ( (lv_arguments_4_0= ruleNamedArgument ) )
                    	    // InternalXtext.g:1616:6: (lv_arguments_4_0= ruleNamedArgument )
                    	    {
                    	    // InternalXtext.g:1616:6: (lv_arguments_4_0= ruleNamedArgument )
                    	    // InternalXtext.g:1617:7: lv_arguments_4_0= ruleNamedArgument
                    	    {

                    	    							newCompositeNode(grammarAccess.getRuleCallAccess().getArgumentsNamedArgumentParserRuleCall_1_2_1_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_23);
                    	    lv_arguments_4_0=ruleNamedArgument();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getRuleCallRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"arguments",
                    	    								lv_arguments_4_0,
                    	    								"org.eclipse.xtext.Xtext.NamedArgument");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

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

                    otherlv_5=(Token)match(input,28,FollowSets000.FOLLOW_2); 

                    				newLeafNode(otherlv_5, grammarAccess.getRuleCallAccess().getGreaterThanSignKeyword_1_3());
                    			

                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
1263311
public final EObject ruleAndExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_NotExpression_0 = null;

        EObject lv_right_3_0 = null;


         enterRule(); 
            
        try {
            // InternalSimpleAntlr.g:1025:28: ( (this_NotExpression_0= ruleNotExpression ( () otherlv_2= '&&' ( (lv_right_3_0= ruleNotExpression ) ) )* ) )
            // InternalSimpleAntlr.g:1026:1: (this_NotExpression_0= ruleNotExpression ( () otherlv_2= '&&' ( (lv_right_3_0= ruleNotExpression ) ) )* )
            {
            // InternalSimpleAntlr.g:1026:1: (this_NotExpression_0= ruleNotExpression ( () otherlv_2= '&&' ( (lv_right_3_0= ruleNotExpression ) ) )* )
            // InternalSimpleAntlr.g:1027:2: this_NotExpression_0= ruleNotExpression ( () otherlv_2= '&&' ( (lv_right_3_0= ruleNotExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getAndExpressionAccess().getNotExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_26);
            this_NotExpression_0=ruleNotExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_NotExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalSimpleAntlr.g:1038:1: ( () otherlv_2= '&&' ( (lv_right_3_0= ruleNotExpression ) ) )*
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( (LA20_0==32) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // InternalSimpleAntlr.g:1038:2: () otherlv_2= '&&' ( (lv_right_3_0= ruleNotExpression ) )
            	    {
            	    // InternalSimpleAntlr.g:1038:2: ()
            	    // InternalSimpleAntlr.g:1039:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getAndExpressionAccess().getAndExpressionLeftAction_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_2=(Token)match(input,32,FOLLOW_20); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getAndExpressionAccess().getAmpersandAmpersandKeyword_1_1());
            	          
            	    }
            	    // InternalSimpleAntlr.g:1051:1: ( (lv_right_3_0= ruleNotExpression ) )
            	    // InternalSimpleAntlr.g:1052:1: (lv_right_3_0= ruleNotExpression )
            	    {
            	    // InternalSimpleAntlr.g:1052:1: (lv_right_3_0= ruleNotExpression )
            	    // InternalSimpleAntlr.g:1053:3: lv_right_3_0= ruleNotExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getAndExpressionAccess().getRightNotExpressionParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_26);
            	    lv_right_3_0=ruleNotExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getAndExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"right",
            	              		lv_right_3_0, 
            	              		"org.eclipse.xtext.generator.parser.antlr.debug.SimpleAntlr.NotExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
728941
public final EObject ruleXPostfixOperation() throws RecognitionException {
        EObject current = null;

        EObject this_XMemberFeatureCall_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:13159:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
            // InternalSARL.g:13160:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
            {
            // InternalSARL.g:13160:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
            // InternalSARL.g:13161:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
            {
            if ( state.backtracking==0 ) {

              			newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0());
              		
            }
            pushFollow(FOLLOW_124);
            this_XMemberFeatureCall_0=ruleXMemberFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			current = this_XMemberFeatureCall_0;
              			afterParserOrEnumRuleCall();
              		
            }
            // InternalSARL.g:13169:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
            int alt314=2;
            int LA314_0 = input.LA(1);

            if ( (LA314_0==125) ) {
                int LA314_1 = input.LA(2);

                if ( (synpred40_InternalSARL()) ) {
                    alt314=1;
                }
            }
            else if ( (LA314_0==126) ) {
                int LA314_2 = input.LA(2);

                if ( (synpred40_InternalSARL()) ) {
                    alt314=1;
                }
            }
            switch (alt314) {
                case 1 :
                    // InternalSARL.g:13170:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
                    {
                    // InternalSARL.g:13180:4: ( () ( ( ruleOpPostfix ) ) )
                    // InternalSARL.g:13181:5: () ( ( ruleOpPostfix ) )
                    {
                    // InternalSARL.g:13181:5: ()
                    // InternalSARL.g:13182:6: 
                    {
                    if ( state.backtracking==0 ) {

                      						current = forceCreateModelElementAndSet(
                      							grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
                      							current);
                      					
                    }

                    }

                    // InternalSARL.g:13188:5: ( ( ruleOpPostfix ) )
                    // InternalSARL.g:13189:6: ( ruleOpPostfix )
                    {
                    // InternalSARL.g:13189:6: ( ruleOpPostfix )
                    // InternalSARL.g:13190:7: ruleOpPostfix
                    {
                    if ( state.backtracking==0 ) {

                      							if (current==null) {
                      								current = createModelElement(grammarAccess.getXPostfixOperationRule());
                      							}
                      						
                    }
                    if ( state.backtracking==0 ) {

                      							newCompositeNode(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0());
                      						
                    }
                    pushFollow(FOLLOW_2);
                    ruleOpPostfix();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      							afterParserOrEnumRuleCall();
                      						
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
229646
public final EObject entryRuleTerminalRuleCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTerminalRuleCall = null;


        try {
            // InternalXtext.g:2046:57: (iv_ruleTerminalRuleCall= ruleTerminalRuleCall EOF )
            // InternalXtext.g:2047:2: iv_ruleTerminalRuleCall= ruleTerminalRuleCall EOF
            {
             newCompositeNode(grammarAccess.getTerminalRuleCallRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTerminalRuleCall=ruleTerminalRuleCall();

            state._fsp--;

             current =iv_ruleTerminalRuleCall; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
73559
public final EObject ruleAnnotation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;


        	enterRule();

        try {
            // InternalXtext.g:533:2: ( (otherlv_0= '@' ( (lv_name_1_0= RULE_ID ) ) ) )
            // InternalXtext.g:534:2: (otherlv_0= '@' ( (lv_name_1_0= RULE_ID ) ) )
            {
            // InternalXtext.g:534:2: (otherlv_0= '@' ( (lv_name_1_0= RULE_ID ) ) )
            // InternalXtext.g:535:3: otherlv_0= '@' ( (lv_name_1_0= RULE_ID ) )
            {
            otherlv_0=(Token)match(input,21,FollowSets000.FOLLOW_13); 

            			newLeafNode(otherlv_0, grammarAccess.getAnnotationAccess().getCommercialAtKeyword_0());
            		
            // InternalXtext.g:539:3: ( (lv_name_1_0= RULE_ID ) )
            // InternalXtext.g:540:4: (lv_name_1_0= RULE_ID )
            {
            // InternalXtext.g:540:4: (lv_name_1_0= RULE_ID )
            // InternalXtext.g:541:5: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_2); 

            					newLeafNode(lv_name_1_0, grammarAccess.getAnnotationAccess().getNameIDTerminalRuleCall_1_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getAnnotationRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_1_0,
            						"org.eclipse.xtext.common.Terminals.ID");
            				

            }


            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
333014
public final void mRULE_ID() throws RecognitionException {
        try {
            int _type = RULE_ID;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalSARL.g:48763:9: ( ( '^' )? ( RULE_IDENTIFIER_START | RULE_UNICODE_ESCAPE ) ( RULE_IDENTIFIER_PART | RULE_UNICODE_ESCAPE )* )
            // InternalSARL.g:48763:11: ( '^' )? ( RULE_IDENTIFIER_START | RULE_UNICODE_ESCAPE ) ( RULE_IDENTIFIER_PART | RULE_UNICODE_ESCAPE )*
            {
            // InternalSARL.g:48763:11: ( '^' )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0=='^') ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // InternalSARL.g:48763:11: '^'
                    {
                    match('^'); 

                    }
                    break;

            }

            // InternalSARL.g:48763:16: ( RULE_IDENTIFIER_START | RULE_UNICODE_ESCAPE )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0=='$'||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')||(LA2_0>='\u00A2' && LA2_0<='\u00A5')||LA2_0=='\u00AA'||LA2_0=='\u00B5'||LA2_0=='\u00BA'||(LA2_0>='\u00C0' && LA2_0<='\u00D6')||(LA2_0>='\u00D8' && LA2_0<='\u00F6')||(LA2_0>='\u00F8' && LA2_0<='\u0236')||(LA2_0>='\u0250' && LA2_0<='\u02C1')||(LA2_0>='\u02C6' && LA2_0<='\u02D1')||(LA2_0>='\u02E0' && LA2_0<='\u02E4')||LA2_0=='\u02EE'||LA2_0=='\u037A'||LA2_0=='\u0386'||(LA2_0>='\u0388' && LA2_0<='\u038A')||LA2_0=='\u038C'||(LA2_0>='\u038E' && LA2_0<='\u03A1')||(LA2_0>='\u03A3' && LA2_0<='\u03CE')||(LA2_0>='\u03D0' && LA2_0<='\u03F5')||(LA2_0>='\u03F7' && LA2_0<='\u03FB')||(LA2_0>='\u0400' && LA2_0<='\u0481')||(LA2_0>='\u048A' && LA2_0<='\u04CE')||(LA2_0>='\u04D0' && LA2_0<='\u04F5')||(LA2_0>='\u04F8' && LA2_0<='\u04F9')||(LA2_0>='\u0500' && LA2_0<='\u050F')||(LA2_0>='\u0531' && LA2_0<='\u0556')||LA2_0=='\u0559'||(LA2_0>='\u0561' && LA2_0<='\u0587')||(LA2_0>='\u05D0' && LA2_0<='\u05EA')||(LA2_0>='\u05F0' && LA2_0<='\u05F2')||(LA2_0>='\u0621' && LA2_0<='\u063A')||(LA2_0>='\u0640' && LA2_0<='\u064A')||(LA2_0>='\u066E' && LA2_0<='\u066F')||(LA2_0>='\u0671' && LA2_0<='\u06D3')||LA2_0=='\u06D5'||(LA2_0>='\u06E5' && LA2_0<='\u06E6')||(LA2_0>='\u06EE' && LA2_0<='\u06EF')||(LA2_0>='\u06FA' && LA2_0<='\u06FC')||LA2_0=='\u06FF'||LA2_0=='\u0710'||(LA2_0>='\u0712' && LA2_0<='\u072F')||(LA2_0>='\u074D' && LA2_0<='\u074F')||(LA2_0>='\u0780' && LA2_0<='\u07A5')||LA2_0=='\u07B1'||(LA2_0>='\u0904' && LA2_0<='\u0939')||LA2_0=='\u093D'||LA2_0=='\u0950'||(LA2_0>='\u0958' && LA2_0<='\u0961')||(LA2_0>='\u0985' && LA2_0<='\u098C')||(LA2_0>='\u098F' && LA2_0<='\u0990')||(LA2_0>='\u0993' && LA2_0<='\u09A8')||(LA2_0>='\u09AA' && LA2_0<='\u09B0')||LA2_0=='\u09B2'||(LA2_0>='\u09B6' && LA2_0<='\u09B9')||LA2_0=='\u09BD'||(LA2_0>='\u09DC' && LA2_0<='\u09DD')||(LA2_0>='\u09DF' && LA2_0<='\u09E1')||(LA2_0>='\u09F0' && LA2_0<='\u09F3')||(LA2_0>='\u0A05' && LA2_0<='\u0A0A')||(LA2_0>='\u0A0F' && LA2_0<='\u0A10')||(LA2_0>='\u0A13' && LA2_0<='\u0A28')||(LA2_0>='\u0A2A' && LA2_0<='\u0A30')||(LA2_0>='\u0A32' && LA2_0<='\u0A33')||(LA2_0>='\u0A35' && LA2_0<='\u0A36')||(LA2_0>='\u0A38' && LA2_0<='\u0A39')||(LA2_0>='\u0A59' && LA2_0<='\u0A5C')||LA2_0=='\u0A5E'||(LA2_0>='\u0A72' && LA2_0<='\u0A74')||(LA2_0>='\u0A85' && LA2_0<='\u0A8D')||(LA2_0>='\u0A8F' && LA2_0<='\u0A91')||(LA2_0>='\u0A93' && LA2_0<='\u0AA8')||(LA2_0>='\u0AAA' && LA2_0<='\u0AB0')||(LA2_0>='\u0AB2' && LA2_0<='\u0AB3')||(LA2_0>='\u0AB5' && LA2_0<='\u0AB9')||LA2_0=='\u0ABD'||LA2_0=='\u0AD0'||(LA2_0>='\u0AE0' && LA2_0<='\u0AE1')||LA2_0=='\u0AF1'||(LA2_0>='\u0B05' && LA2_0<='\u0B0C')||(LA2_0>='\u0B0F' && LA2_0<='\u0B10')||(LA2_0>='\u0B13' && LA2_0<='\u0B28')||(LA2_0>='\u0B2A' && LA2_0<='\u0B30')||(LA2_0>='\u0B32' && LA2_0<='\u0B33')||(LA2_0>='\u0B35' && LA2_0<='\u0B39')||LA2_0=='\u0B3D'||(LA2_0>='\u0B5C' && LA2_0<='\u0B5D')||(LA2_0>='\u0B5F' && LA2_0<='\u0B61')||LA2_0=='\u0B71'||LA2_0=='\u0B83'||(LA2_0>='\u0B85' && LA2_0<='\u0B8A')||(LA2_0>='\u0B8E' && LA2_0<='\u0B90')||(LA2_0>='\u0B92' && LA2_0<='\u0B95')||(LA2_0>='\u0B99' && LA2_0<='\u0B9A')||LA2_0=='\u0B9C'||(LA2_0>='\u0B9E' && LA2_0<='\u0B9F')||(LA2_0>='\u0BA3' && LA2_0<='\u0BA4')||(LA2_0>='\u0BA8' && LA2_0<='\u0BAA')||(LA2_0>='\u0BAE' && LA2_0<='\u0BB5')||(LA2_0>='\u0BB7' && LA2_0<='\u0BB9')||LA2_0=='\u0BF9'||(LA2_0>='\u0C05' && LA2_0<='\u0C0C')||(LA2_0>='\u0C0E' && LA2_0<='\u0C10')||(LA2_0>='\u0C12' && LA2_0<='\u0C28')||(LA2_0>='\u0C2A' && LA2_0<='\u0C33')||(LA2_0>='\u0C35' && LA2_0<='\u0C39')||(LA2_0>='\u0C60' && LA2_0<='\u0C61')||(LA2_0>='\u0C85' && LA2_0<='\u0C8C')||(LA2_0>='\u0C8E' && LA2_0<='\u0C90')||(LA2_0>='\u0C92' && LA2_0<='\u0CA8')||(LA2_0>='\u0CAA' && LA2_0<='\u0CB3')||(LA2_0>='\u0CB5' && LA2_0<='\u0CB9')||LA2_0=='\u0CBD'||LA2_0=='\u0CDE'||(LA2_0>='\u0CE0' && LA2_0<='\u0CE1')||(LA2_0>='\u0D05' && LA2_0<='\u0D0C')||(LA2_0>='\u0D0E' && LA2_0<='\u0D10')||(LA2_0>='\u0D12' && LA2_0<='\u0D28')||(LA2_0>='\u0D2A' && LA2_0<='\u0D39')||(LA2_0>='\u0D60' && LA2_0<='\u0D61')||(LA2_0>='\u0D85' && LA2_0<='\u0D96')||(LA2_0>='\u0D9A' && LA2_0<='\u0DB1')||(LA2_0>='\u0DB3' && LA2_0<='\u0DBB')||LA2_0=='\u0DBD'||(LA2_0>='\u0DC0' && LA2_0<='\u0DC6')||(LA2_0>='\u0E01' && LA2_0<='\u0E30')||(LA2_0>='\u0E32' && LA2_0<='\u0E33')||(LA2_0>='\u0E3F' && LA2_0<='\u0E46')||(LA2_0>='\u0E81' && LA2_0<='\u0E82')||LA2_0=='\u0E84'||(LA2_0>='\u0E87' && LA2_0<='\u0E88')||LA2_0=='\u0E8A'||LA2_0=='\u0E8D'||(LA2_0>='\u0E94' && LA2_0<='\u0E97')||(LA2_0>='\u0E99' && LA2_0<='\u0E9F')||(LA2_0>='\u0EA1' && LA2_0<='\u0EA3')||LA2_0=='\u0EA5'||LA2_0=='\u0EA7'||(LA2_0>='\u0EAA' && LA2_0<='\u0EAB')||(LA2_0>='\u0EAD' && LA2_0<='\u0EB0')||(LA2_0>='\u0EB2' && LA2_0<='\u0EB3')||LA2_0=='\u0EBD'||(LA2_0>='\u0EC0' && LA2_0<='\u0EC4')||LA2_0=='\u0EC6'||(LA2_0>='\u0EDC' && LA2_0<='\u0EDD')||LA2_0=='\u0F00'||(LA2_0>='\u0F40' && LA2_0<='\u0F47')||(LA2_0>='\u0F49' && LA2_0<='\u0F6A')||(LA2_0>='\u0F88' && LA2_0<='\u0F8B')||(LA2_0>='\u1000' && LA2_0<='\u1021')||(LA2_0>='\u1023' && LA2_0<='\u1027')||(LA2_0>='\u1029' && LA2_0<='\u102A')||(LA2_0>='\u1050' && LA2_0<='\u1055')||(LA2_0>='\u10A0' && LA2_0<='\u10C5')||(LA2_0>='\u10D0' && LA2_0<='\u10F8')||(LA2_0>='\u1100' && LA2_0<='\u1159')||(LA2_0>='\u115F' && LA2_0<='\u11A2')||(LA2_0>='\u11A8' && LA2_0<='\u11F9')||(LA2_0>='\u1200' && LA2_0<='\u1206')||(LA2_0>='\u1208' && LA2_0<='\u1246')||LA2_0=='\u1248'||(LA2_0>='\u124A' && LA2_0<='\u124D')||(LA2_0>='\u1250' && LA2_0<='\u1256')||LA2_0=='\u1258'||(LA2_0>='\u125A' && LA2_0<='\u125D')||(LA2_0>='\u1260' && LA2_0<='\u1286')||LA2_0=='\u1288'||(LA2_0>='\u128A' && LA2_0<='\u128D')||(LA2_0>='\u1290' && LA2_0<='\u12AE')||LA2_0=='\u12B0'||(LA2_0>='\u12B2' && LA2_0<='\u12B5')||(LA2_0>='\u12B8' && LA2_0<='\u12BE')||LA2_0=='\u12C0'||(LA2_0>='\u12C2' && LA2_0<='\u12C5')||(LA2_0>='\u12C8' && LA2_0<='\u12CE')||(LA2_0>='\u12D0' && LA2_0<='\u12D6')||(LA2_0>='\u12D8' && LA2_0<='\u12EE')||(LA2_0>='\u12F0' && LA2_0<='\u130E')||LA2_0=='\u1310'||(LA2_0>='\u1312' && LA2_0<='\u1315')||(LA2_0>='\u1318' && LA2_0<='\u131E')||(LA2_0>='\u1320' && LA2_0<='\u1346')||(LA2_0>='\u1348' && LA2_0<='\u135A')||(LA2_0>='\u13A0' && LA2_0<='\u13F4')||(LA2_0>='\u1401' && LA2_0<='\u166C')||(LA2_0>='\u166F' && LA2_0<='\u1676')||(LA2_0>='\u1681' && LA2_0<='\u169A')||(LA2_0>='\u16A0' && LA2_0<='\u16EA')||(LA2_0>='\u16EE' && LA2_0<='\u16F0')||(LA2_0>='\u1700' && LA2_0<='\u170C')||(LA2_0>='\u170E' && LA2_0<='\u1711')||(LA2_0>='\u1720' && LA2_0<='\u1731')||(LA2_0>='\u1740' && LA2_0<='\u1751')||(LA2_0>='\u1760' && LA2_0<='\u176C')||(LA2_0>='\u176E' && LA2_0<='\u1770')||(LA2_0>='\u1780' && LA2_0<='\u17B3')||LA2_0=='\u17D7'||(LA2_0>='\u17DB' && LA2_0<='\u17DC')||(LA2_0>='\u1820' && LA2_0<='\u1877')||(LA2_0>='\u1880' && LA2_0<='\u18A8')||(LA2_0>='\u1900' && LA2_0<='\u191C')||(LA2_0>='\u1950' && LA2_0<='\u196D')||(LA2_0>='\u1970' && LA2_0<='\u1974')||(LA2_0>='\u1D00' && LA2_0<='\u1D6B')||(LA2_0>='\u1E00' && LA2_0<='\u1E9B')||(LA2_0>='\u1EA0' && LA2_0<='\u1EF9')||(LA2_0>='\u1F00' && LA2_0<='\u1F15')||(LA2_0>='\u1F18' && LA2_0<='\u1F1D')||(LA2_0>='\u1F20' && LA2_0<='\u1F45')||(LA2_0>='\u1F48' && LA2_0<='\u1F4D')||(LA2_0>='\u1F50' && LA2_0<='\u1F57')||LA2_0=='\u1F59'||LA2_0=='\u1F5B'||LA2_0=='\u1F5D'||(LA2_0>='\u1F5F' && LA2_0<='\u1F7D')||(LA2_0>='\u1F80' && LA2_0<='\u1FB4')||(LA2_0>='\u1FB6' && LA2_0<='\u1FBC')||LA2_0=='\u1FBE'||(LA2_0>='\u1FC2' && LA2_0<='\u1FC4')||(LA2_0>='\u1FC6' && LA2_0<='\u1FCC')||(LA2_0>='\u1FD0' && LA2_0<='\u1FD3')||(LA2_0>='\u1FD6' && LA2_0<='\u1FDB')||(LA2_0>='\u1FE0' && LA2_0<='\u1FEC')||(LA2_0>='\u1FF2' && LA2_0<='\u1FF4')||(LA2_0>='\u1FF6' && LA2_0<='\u1FFC')||(LA2_0>='\u203F' && LA2_0<='\u2040')||LA2_0=='\u2054'||LA2_0=='\u2071'||LA2_0=='\u207F'||(LA2_0>='\u20A0' && LA2_0<='\u20B1')||LA2_0=='\u2102'||LA2_0=='\u2107'||(LA2_0>='\u210A' && LA2_0<='\u2113')||LA2_0=='\u2115'||(LA2_0>='\u2119' && LA2_0<='\u211D')||LA2_0=='\u2124'||LA2_0=='\u2126'||LA2_0=='\u2128'||(LA2_0>='\u212A' && LA2_0<='\u212D')||(LA2_0>='\u212F' && LA2_0<='\u2131')||(LA2_0>='\u2133' && LA2_0<='\u2139')||(LA2_0>='\u213D' && LA2_0<='\u213F')||(LA2_0>='\u2145' && LA2_0<='\u2149')||(LA2_0>='\u2160' && LA2_0<='\u2183')||(LA2_0>='\u3005' && LA2_0<='\u3007')||(LA2_0>='\u3021' && LA2_0<='\u3029')||(LA2_0>='\u3031' && LA2_0<='\u3035')||(LA2_0>='\u3038' && LA2_0<='\u303C')||(LA2_0>='\u3041' && LA2_0<='\u3096')||(LA2_0>='\u309D' && LA2_0<='\u309F')||(LA2_0>='\u30A1' && LA2_0<='\u30FF')||(LA2_0>='\u3105' && LA2_0<='\u312C')||(LA2_0>='\u3131' && LA2_0<='\u318E')||(LA2_0>='\u31A0' && LA2_0<='\u31B7')||(LA2_0>='\u31F0' && LA2_0<='\u31FF')||(LA2_0>='\u3400' && LA2_0<='\u4DB5')||(LA2_0>='\u4E00' && LA2_0<='\u9FA5')||(LA2_0>='\uA000' && LA2_0<='\uA48C')||(LA2_0>='\uAC00' && LA2_0<='\uD7A3')||(LA2_0>='\uF900' && LA2_0<='\uFA2D')||(LA2_0>='\uFA30' && LA2_0<='\uFA6A')||(LA2_0>='\uFB00' && LA2_0<='\uFB06')||(LA2_0>='\uFB13' && LA2_0<='\uFB17')||LA2_0=='\uFB1D'||(LA2_0>='\uFB1F' && LA2_0<='\uFB28')||(LA2_0>='\uFB2A' && LA2_0<='\uFB36')||(LA2_0>='\uFB38' && LA2_0<='\uFB3C')||LA2_0=='\uFB3E'||(LA2_0>='\uFB40' && LA2_0<='\uFB41')||(LA2_0>='\uFB43' && LA2_0<='\uFB44')||(LA2_0>='\uFB46' && LA2_0<='\uFBB1')||(LA2_0>='\uFBD3' && LA2_0<='\uFD3D')||(LA2_0>='\uFD50' && LA2_0<='\uFD8F')||(LA2_0>='\uFD92' && LA2_0<='\uFDC7')||(LA2_0>='\uFDF0' && LA2_0<='\uFDFC')||(LA2_0>='\uFE33' && LA2_0<='\uFE34')||(LA2_0>='\uFE4D' && LA2_0<='\uFE4F')||LA2_0=='\uFE69'||(LA2_0>='\uFE70' && LA2_0<='\uFE74')||(LA2_0>='\uFE76' && LA2_0<='\uFEFC')||LA2_0=='\uFF04'||(LA2_0>='\uFF21' && LA2_0<='\uFF3A')||LA2_0=='\uFF3F'||(LA2_0>='\uFF41' && LA2_0<='\uFF5A')||(LA2_0>='\uFF65' && LA2_0<='\uFFBE')||(LA2_0>='\uFFC2' && LA2_0<='\uFFC7')||(LA2_0>='\uFFCA' && LA2_0<='\uFFCF')||(LA2_0>='\uFFD2' && LA2_0<='\uFFD7')||(LA2_0>='\uFFDA' && LA2_0<='\uFFDC')||(LA2_0>='\uFFE0' && LA2_0<='\uFFE1')||(LA2_0>='\uFFE5' && LA2_0<='\uFFE6')) ) {
                alt2=1;
            }
            else if ( (LA2_0=='\\') ) {
                alt2=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }
            switch (alt2) {
                case 1 :
                    // InternalSARL.g:48763:17: RULE_IDENTIFIER_START
                    {
                    mRULE_IDENTIFIER_START(); 

                    }
                    break;
                case 2 :
                    // InternalSARL.g:48763:39: RULE_UNICODE_ESCAPE
                    {
                    mRULE_UNICODE_ESCAPE(); 

                    }
                    break;

            }

            // InternalSARL.g:48763:60: ( RULE_IDENTIFIER_PART | RULE_UNICODE_ESCAPE )*
            loop3:
            do {
                int alt3=3;
                int LA3_0 = input.LA(1);

                if ( ((LA3_0>='\u0000' && LA3_0<='\b')||(LA3_0>='\u000E' && LA3_0<='\u001B')||LA3_0=='$'||(LA3_0>='0' && LA3_0<='9')||(LA3_0>='A' && LA3_0<='Z')||LA3_0=='_'||(LA3_0>='a' && LA3_0<='z')||(LA3_0>='\u007F' && LA3_0<='\u009F')||(LA3_0>='\u00A2' && LA3_0<='\u00A5')||LA3_0=='\u00AA'||LA3_0=='\u00AD'||LA3_0=='\u00B5'||LA3_0=='\u00BA'||(LA3_0>='\u00C0' && LA3_0<='\u00D6')||(LA3_0>='\u00D8' && LA3_0<='\u00F6')||(LA3_0>='\u00F8' && LA3_0<='\u0236')||(LA3_0>='\u0250' && LA3_0<='\u02C1')||(LA3_0>='\u02C6' && LA3_0<='\u02D1')||(LA3_0>='\u02E0' && LA3_0<='\u02E4')||LA3_0=='\u02EE'||(LA3_0>='\u0300' && LA3_0<='\u0357')||(LA3_0>='\u035D' && LA3_0<='\u036F')||LA3_0=='\u037A'||LA3_0=='\u0386'||(LA3_0>='\u0388' && LA3_0<='\u038A')||LA3_0=='\u038C'||(LA3_0>='\u038E' && LA3_0<='\u03A1')||(LA3_0>='\u03A3' && LA3_0<='\u03CE')||(LA3_0>='\u03D0' && LA3_0<='\u03F5')||(LA3_0>='\u03F7' && LA3_0<='\u03FB')||(LA3_0>='\u0400' && LA3_0<='\u0481')||(LA3_0>='\u0483' && LA3_0<='\u0486')||(LA3_0>='\u048A' && LA3_0<='\u04CE')||(LA3_0>='\u04D0' && LA3_0<='\u04F5')||(LA3_0>='\u04F8' && LA3_0<='\u04F9')||(LA3_0>='\u0500' && LA3_0<='\u050F')||(LA3_0>='\u0531' && LA3_0<='\u0556')||LA3_0=='\u0559'||(LA3_0>='\u0561' && LA3_0<='\u0587')||(LA3_0>='\u0591' && LA3_0<='\u05A1')||(LA3_0>='\u05A3' && LA3_0<='\u05B9')||(LA3_0>='\u05BB' && LA3_0<='\u05BD')||LA3_0=='\u05BF'||(LA3_0>='\u05C1' && LA3_0<='\u05C2')||LA3_0=='\u05C4'||(LA3_0>='\u05D0' && LA3_0<='\u05EA')||(LA3_0>='\u05F0' && LA3_0<='\u05F2')||(LA3_0>='\u0600' && LA3_0<='\u0603')||(LA3_0>='\u0610' && LA3_0<='\u0615')||(LA3_0>='\u0621' && LA3_0<='\u063A')||(LA3_0>='\u0640' && LA3_0<='\u0658')||(LA3_0>='\u0660' && LA3_0<='\u0669')||(LA3_0>='\u066E' && LA3_0<='\u06D3')||(LA3_0>='\u06D5' && LA3_0<='\u06DD')||(LA3_0>='\u06DF' && LA3_0<='\u06E8')||(LA3_0>='\u06EA' && LA3_0<='\u06FC')||LA3_0=='\u06FF'||(LA3_0>='\u070F' && LA3_0<='\u074A')||(LA3_0>='\u074D' && LA3_0<='\u074F')||(LA3_0>='\u0780' && LA3_0<='\u07B1')||(LA3_0>='\u0901' && LA3_0<='\u0939')||(LA3_0>='\u093C' && LA3_0<='\u094D')||(LA3_0>='\u0950' && LA3_0<='\u0954')||(LA3_0>='\u0958' && LA3_0<='\u0963')||(LA3_0>='\u0966' && LA3_0<='\u096F')||(LA3_0>='\u0981' && LA3_0<='\u0983')||(LA3_0>='\u0985' && LA3_0<='\u098C')||(LA3_0>='\u098F' && LA3_0<='\u0990')||(LA3_0>='\u0993' && LA3_0<='\u09A8')||(LA3_0>='\u09AA' && LA3_0<='\u09B0')||LA3_0=='\u09B2'||(LA3_0>='\u09B6' && LA3_0<='\u09B9')||(LA3_0>='\u09BC' && LA3_0<='\u09C4')||(LA3_0>='\u09C7' && LA3_0<='\u09C8')||(LA3_0>='\u09CB' && LA3_0<='\u09CD')||LA3_0=='\u09D7'||(LA3_0>='\u09DC' && LA3_0<='\u09DD')||(LA3_0>='\u09DF' && LA3_0<='\u09E3')||(LA3_0>='\u09E6' && LA3_0<='\u09F3')||(LA3_0>='\u0A01' && LA3_0<='\u0A03')||(LA3_0>='\u0A05' && LA3_0<='\u0A0A')||(LA3_0>='\u0A0F' && LA3_0<='\u0A10')||(LA3_0>='\u0A13' && LA3_0<='\u0A28')||(LA3_0>='\u0A2A' && LA3_0<='\u0A30')||(LA3_0>='\u0A32' && LA3_0<='\u0A33')||(LA3_0>='\u0A35' && LA3_0<='\u0A36')||(LA3_0>='\u0A38' && LA3_0<='\u0A39')||LA3_0=='\u0A3C'||(LA3_0>='\u0A3E' && LA3_0<='\u0A42')||(LA3_0>='\u0A47' && LA3_0<='\u0A48')||(LA3_0>='\u0A4B' && LA3_0<='\u0A4D')||(LA3_0>='\u0A59' && LA3_0<='\u0A5C')||LA3_0=='\u0A5E'||(LA3_0>='\u0A66' && LA3_0<='\u0A74')||(LA3_0>='\u0A81' && LA3_0<='\u0A83')||(LA3_0>='\u0A85' && LA3_0<='\u0A8D')||(LA3_0>='\u0A8F' && LA3_0<='\u0A91')||(LA3_0>='\u0A93' && LA3_0<='\u0AA8')||(LA3_0>='\u0AAA' && LA3_0<='\u0AB0')||(LA3_0>='\u0AB2' && LA3_0<='\u0AB3')||(LA3_0>='\u0AB5' && LA3_0<='\u0AB9')||(LA3_0>='\u0ABC' && LA3_0<='\u0AC5')||(LA3_0>='\u0AC7' && LA3_0<='\u0AC9')||(LA3_0>='\u0ACB' && LA3_0<='\u0ACD')||LA3_0=='\u0AD0'||(LA3_0>='\u0AE0' && LA3_0<='\u0AE3')||(LA3_0>='\u0AE6' && LA3_0<='\u0AEF')||LA3_0=='\u0AF1'||(LA3_0>='\u0B01' && LA3_0<='\u0B03')||(LA3_0>='\u0B05' && LA3_0<='\u0B0C')||(LA3_0>='\u0B0F' && LA3_0<='\u0B10')||(LA3_0>='\u0B13' && LA3_0<='\u0B28')||(LA3_0>='\u0B2A' && LA3_0<='\u0B30')||(LA3_0>='\u0B32' && LA3_0<='\u0B33')||(LA3_0>='\u0B35' && LA3_0<='\u0B39')||(LA3_0>='\u0B3C' && LA3_0<='\u0B43')||(LA3_0>='\u0B47' && LA3_0<='\u0B48')||(LA3_0>='\u0B4B' && LA3_0<='\u0B4D')||(LA3_0>='\u0B56' && LA3_0<='\u0B57')||(LA3_0>='\u0B5C' && LA3_0<='\u0B5D')||(LA3_0>='\u0B5F' && LA3_0<='\u0B61')||(LA3_0>='\u0B66' && LA3_0<='\u0B6F')||LA3_0=='\u0B71'||(LA3_0>='\u0B82' && LA3_0<='\u0B83')||(LA3_0>='\u0B85' && LA3_0<='\u0B8A')||(LA3_0>='\u0B8E' && LA3_0<='\u0B90')||(LA3_0>='\u0B92' && LA3_0<='\u0B95')||(LA3_0>='\u0B99' && LA3_0<='\u0B9A')||LA3_0=='\u0B9C'||(LA3_0>='\u0B9E' && LA3_0<='\u0B9F')||(LA3_0>='\u0BA3' && LA3_0<='\u0BA4')||(LA3_0>='\u0BA8' && LA3_0<='\u0BAA')||(LA3_0>='\u0BAE' && LA3_0<='\u0BB5')||(LA3_0>='\u0BB7' && LA3_0<='\u0BB9')||(LA3_0>='\u0BBE' && LA3_0<='\u0BC2')||(LA3_0>='\u0BC6' && LA3_0<='\u0BC8')||(LA3_0>='\u0BCA' && LA3_0<='\u0BCD')||LA3_0=='\u0BD7'||(LA3_0>='\u0BE7' && LA3_0<='\u0BEF')||LA3_0=='\u0BF9'||(LA3_0>='\u0C01' && LA3_0<='\u0C03')||(LA3_0>='\u0C05' && LA3_0<='\u0C0C')||(LA3_0>='\u0C0E' && LA3_0<='\u0C10')||(LA3_0>='\u0C12' && LA3_0<='\u0C28')||(LA3_0>='\u0C2A' && LA3_0<='\u0C33')||(LA3_0>='\u0C35' && LA3_0<='\u0C39')||(LA3_0>='\u0C3E' && LA3_0<='\u0C44')||(LA3_0>='\u0C46' && LA3_0<='\u0C48')||(LA3_0>='\u0C4A' && LA3_0<='\u0C4D')||(LA3_0>='\u0C55' && LA3_0<='\u0C56')||(LA3_0>='\u0C60' && LA3_0<='\u0C61')||(LA3_0>='\u0C66' && LA3_0<='\u0C6F')||(LA3_0>='\u0C82' && LA3_0<='\u0C83')||(LA3_0>='\u0C85' && LA3_0<='\u0C8C')||(LA3_0>='\u0C8E' && LA3_0<='\u0C90')||(LA3_0>='\u0C92' && LA3_0<='\u0CA8')||(LA3_0>='\u0CAA' && LA3_0<='\u0CB3')||(LA3_0>='\u0CB5' && LA3_0<='\u0CB9')||(LA3_0>='\u0CBC' && LA3_0<='\u0CC4')||(LA3_0>='\u0CC6' && LA3_0<='\u0CC8')||(LA3_0>='\u0CCA' && LA3_0<='\u0CCD')||(LA3_0>='\u0CD5' && LA3_0<='\u0CD6')||LA3_0=='\u0CDE'||(LA3_0>='\u0CE0' && LA3_0<='\u0CE1')||(LA3_0>='\u0CE6' && LA3_0<='\u0CEF')||(LA3_0>='\u0D02' && LA3_0<='\u0D03')||(LA3_0>='\u0D05' && LA3_0<='\u0D0C')||(LA3_0>='\u0D0E' && LA3_0<='\u0D10')||(LA3_0>='\u0D12' && LA3_0<='\u0D28')||(LA3_0>='\u0D2A' && LA3_0<='\u0D39')||(LA3_0>='\u0D3E' && LA3_0<='\u0D43')||(LA3_0>='\u0D46' && LA3_0<='\u0D48')||(LA3_0>='\u0D4A' && LA3_0<='\u0D4D')||LA3_0=='\u0D57'||(LA3_0>='\u0D60' && LA3_0<='\u0D61')||(LA3_0>='\u0D66' && LA3_0<='\u0D6F')||(LA3_0>='\u0D82' && LA3_0<='\u0D83')||(LA3_0>='\u0D85' && LA3_0<='\u0D96')||(LA3_0>='\u0D9A' && LA3_0<='\u0DB1')||(LA3_0>='\u0DB3' && LA3_0<='\u0DBB')||LA3_0=='\u0DBD'||(LA3_0>='\u0DC0' && LA3_0<='\u0DC6')||LA3_0=='\u0DCA'||(LA3_0>='\u0DCF' && LA3_0<='\u0DD4')||LA3_0=='\u0DD6'||(LA3_0>='\u0DD8' && LA3_0<='\u0DDF')||(LA3_0>='\u0DF2' && LA3_0<='\u0DF3')||(LA3_0>='\u0E01' && LA3_0<='\u0E3A')||(LA3_0>='\u0E3F' && LA3_0<='\u0E4E')||(LA3_0>='\u0E50' && LA3_0<='\u0E59')||(LA3_0>='\u0E81' && LA3_0<='\u0E82')||LA3_0=='\u0E84'||(LA3_0>='\u0E87' && LA3_0<='\u0E88')||LA3_0=='\u0E8A'||LA3_0=='\u0E8D'||(LA3_0>='\u0E94' && LA3_0<='\u0E97')||(LA3_0>='\u0E99' && LA3_0<='\u0E9F')||(LA3_0>='\u0EA1' && LA3_0<='\u0EA3')||LA3_0=='\u0EA5'||LA3_0=='\u0EA7'||(LA3_0>='\u0EAA' && LA3_0<='\u0EAB')||(LA3_0>='\u0EAD' && LA3_0<='\u0EB9')||(LA3_0>='\u0EBB' && LA3_0<='\u0EBD')||(LA3_0>='\u0EC0' && LA3_0<='\u0EC4')||LA3_0=='\u0EC6'||(LA3_0>='\u0EC8' && LA3_0<='\u0ECD')||(LA3_0>='\u0ED0' && LA3_0<='\u0ED9')||(LA3_0>='\u0EDC' && LA3_0<='\u0EDD')||LA3_0=='\u0F00'||(LA3_0>='\u0F18' && LA3_0<='\u0F19')||(LA3_0>='\u0F20' && LA3_0<='\u0F29')||LA3_0=='\u0F35'||LA3_0=='\u0F37'||LA3_0=='\u0F39'||(LA3_0>='\u0F3E' && LA3_0<='\u0F47')||(LA3_0>='\u0F49' && LA3_0<='\u0F6A')||(LA3_0>='\u0F71' && LA3_0<='\u0F84')||(LA3_0>='\u0F86' && LA3_0<='\u0F8B')||(LA3_0>='\u0F90' && LA3_0<='\u0F97')||(LA3_0>='\u0F99' && LA3_0<='\u0FBC')||LA3_0=='\u0FC6'||(LA3_0>='\u1000' && LA3_0<='\u1021')||(LA3_0>='\u1023' && LA3_0<='\u1027')||(LA3_0>='\u1029' && LA3_0<='\u102A')||(LA3_0>='\u102C' && LA3_0<='\u1032')||(LA3_0>='\u1036' && LA3_0<='\u1039')||(LA3_0>='\u1040' && LA3_0<='\u1049')||(LA3_0>='\u1050' && LA3_0<='\u1059')||(LA3_0>='\u10A0' && LA3_0<='\u10C5')||(LA3_0>='\u10D0' && LA3_0<='\u10F8')||(LA3_0>='\u1100' && LA3_0<='\u1159')||(LA3_0>='\u115F' && LA3_0<='\u11A2')||(LA3_0>='\u11A8' && LA3_0<='\u11F9')||(LA3_0>='\u1200' && LA3_0<='\u1206')||(LA3_0>='\u1208' && LA3_0<='\u1246')||LA3_0=='\u1248'||(LA3_0>='\u124A' && LA3_0<='\u124D')||(LA3_0>='\u1250' && LA3_0<='\u1256')||LA3_0=='\u1258'||(LA3_0>='\u125A' && LA3_0<='\u125D')||(LA3_0>='\u1260' && LA3_0<='\u1286')||LA3_0=='\u1288'||(LA3_0>='\u128A' && LA3_0<='\u128D')||(LA3_0>='\u1290' && LA3_0<='\u12AE')||LA3_0=='\u12B0'||(LA3_0>='\u12B2' && LA3_0<='\u12B5')||(LA3_0>='\u12B8' && LA3_0<='\u12BE')||LA3_0=='\u12C0'||(LA3_0>='\u12C2' && LA3_0<='\u12C5')||(LA3_0>='\u12C8' && LA3_0<='\u12CE')||(LA3_0>='\u12D0' && LA3_0<='\u12D6')||(LA3_0>='\u12D8' && LA3_0<='\u12EE')||(LA3_0>='\u12F0' && LA3_0<='\u130E')||LA3_0=='\u1310'||(LA3_0>='\u1312' && LA3_0<='\u1315')||(LA3_0>='\u1318' && LA3_0<='\u131E')||(LA3_0>='\u1320' && LA3_0<='\u1346')||(LA3_0>='\u1348' && LA3_0<='\u135A')||(LA3_0>='\u1369' && LA3_0<='\u1371')||(LA3_0>='\u13A0' && LA3_0<='\u13F4')||(LA3_0>='\u1401' && LA3_0<='\u166C')||(LA3_0>='\u166F' && LA3_0<='\u1676')||(LA3_0>='\u1681' && LA3_0<='\u169A')||(LA3_0>='\u16A0' && LA3_0<='\u16EA')||(LA3_0>='\u16EE' && LA3_0<='\u16F0')||(LA3_0>='\u1700' && LA3_0<='\u170C')||(LA3_0>='\u170E' && LA3_0<='\u1714')||(LA3_0>='\u1720' && LA3_0<='\u1734')||(LA3_0>='\u1740' && LA3_0<='\u1753')||(LA3_0>='\u1760' && LA3_0<='\u176C')||(LA3_0>='\u176E' && LA3_0<='\u1770')||(LA3_0>='\u1772' && LA3_0<='\u1773')||(LA3_0>='\u1780' && LA3_0<='\u17D3')||LA3_0=='\u17D7'||(LA3_0>='\u17DB' && LA3_0<='\u17DD')||(LA3_0>='\u17E0' && LA3_0<='\u17E9')||(LA3_0>='\u180B' && LA3_0<='\u180D')||(LA3_0>='\u1810' && LA3_0<='\u1819')||(LA3_0>='\u1820' && LA3_0<='\u1877')||(LA3_0>='\u1880' && LA3_0<='\u18A9')||(LA3_0>='\u1900' && LA3_0<='\u191C')||(LA3_0>='\u1920' && LA3_0<='\u192B')||(LA3_0>='\u1930' && LA3_0<='\u193B')||(LA3_0>='\u1946' && LA3_0<='\u196D')||(LA3_0>='\u1970' && LA3_0<='\u1974')||(LA3_0>='\u1D00' && LA3_0<='\u1D6B')||(LA3_0>='\u1E00' && LA3_0<='\u1E9B')||(LA3_0>='\u1EA0' && LA3_0<='\u1EF9')||(LA3_0>='\u1F00' && LA3_0<='\u1F15')||(LA3_0>='\u1F18' && LA3_0<='\u1F1D')||(LA3_0>='\u1F20' && LA3_0<='\u1F45')||(LA3_0>='\u1F48' && LA3_0<='\u1F4D')||(LA3_0>='\u1F50' && LA3_0<='\u1F57')||LA3_0=='\u1F59'||LA3_0=='\u1F5B'||LA3_0=='\u1F5D'||(LA3_0>='\u1F5F' && LA3_0<='\u1F7D')||(LA3_0>='\u1F80' && LA3_0<='\u1FB4')||(LA3_0>='\u1FB6' && LA3_0<='\u1FBC')||LA3_0=='\u1FBE'||(LA3_0>='\u1FC2' && LA3_0<='\u1FC4')||(LA3_0>='\u1FC6' && LA3_0<='\u1FCC')||(LA3_0>='\u1FD0' && LA3_0<='\u1FD3')||(LA3_0>='\u1FD6' && LA3_0<='\u1FDB')||(LA3_0>='\u1FE0' && LA3_0<='\u1FEC')||(LA3_0>='\u1FF2' && LA3_0<='\u1FF4')||(LA3_0>='\u1FF6' && LA3_0<='\u1FFC')||(LA3_0>='\u200C' && LA3_0<='\u200F')||(LA3_0>='\u202A' && LA3_0<='\u202E')||(LA3_0>='\u203F' && LA3_0<='\u2040')||LA3_0=='\u2054'||(LA3_0>='\u2060' && LA3_0<='\u2063')||(LA3_0>='\u206A' && LA3_0<='\u206F')||LA3_0=='\u2071'||LA3_0=='\u207F'||(LA3_0>='\u20A0' && LA3_0<='\u20B1')||(LA3_0>='\u20D0' && LA3_0<='\u20DC')||LA3_0=='\u20E1'||(LA3_0>='\u20E5' && LA3_0<='\u20EA')||LA3_0=='\u2102'||LA3_0=='\u2107'||(LA3_0>='\u210A' && LA3_0<='\u2113')||LA3_0=='\u2115'||(LA3_0>='\u2119' && LA3_0<='\u211D')||LA3_0=='\u2124'||LA3_0=='\u2126'||LA3_0=='\u2128'||(LA3_0>='\u212A' && LA3_0<='\u212D')||(LA3_0>='\u212F' && LA3_0<='\u2131')||(LA3_0>='\u2133' && LA3_0<='\u2139')||(LA3_0>='\u213D' && LA3_0<='\u213F')||(LA3_0>='\u2145' && LA3_0<='\u2149')||(LA3_0>='\u2160' && LA3_0<='\u2183')||(LA3_0>='\u3005' && LA3_0<='\u3007')||(LA3_0>='\u3021' && LA3_0<='\u302F')||(LA3_0>='\u3031' && LA3_0<='\u3035')||(LA3_0>='\u3038' && LA3_0<='\u303C')||(LA3_0>='\u3041' && LA3_0<='\u3096')||(LA3_0>='\u3099' && LA3_0<='\u309A')||(LA3_0>='\u309D' && LA3_0<='\u309F')||(LA3_0>='\u30A1' && LA3_0<='\u30FF')||(LA3_0>='\u3105' && LA3_0<='\u312C')||(LA3_0>='\u3131' && LA3_0<='\u318E')||(LA3_0>='\u31A0' && LA3_0<='\u31B7')||(LA3_0>='\u31F0' && LA3_0<='\u31FF')||(LA3_0>='\u3400' && LA3_0<='\u4DB5')||(LA3_0>='\u4E00' && LA3_0<='\u9FA5')||(LA3_0>='\uA000' && LA3_0<='\uA48C')||(LA3_0>='\uAC00' && LA3_0<='\uD7A3')||(LA3_0>='\uF900' && LA3_0<='\uFA2D')||(LA3_0>='\uFA30' && LA3_0<='\uFA6A')||(LA3_0>='\uFB00' && LA3_0<='\uFB06')||(LA3_0>='\uFB13' && LA3_0<='\uFB17')||(LA3_0>='\uFB1D' && LA3_0<='\uFB28')||(LA3_0>='\uFB2A' && LA3_0<='\uFB36')||(LA3_0>='\uFB38' && LA3_0<='\uFB3C')||LA3_0=='\uFB3E'||(LA3_0>='\uFB40' && LA3_0<='\uFB41')||(LA3_0>='\uFB43' && LA3_0<='\uFB44')||(LA3_0>='\uFB46' && LA3_0<='\uFBB1')||(LA3_0>='\uFBD3' && LA3_0<='\uFD3D')||(LA3_0>='\uFD50' && LA3_0<='\uFD8F')||(LA3_0>='\uFD92' && LA3_0<='\uFDC7')||(LA3_0>='\uFDF0' && LA3_0<='\uFDFC')||(LA3_0>='\uFE00' && LA3_0<='\uFE0F')||(LA3_0>='\uFE20' && LA3_0<='\uFE23')||(LA3_0>='\uFE33' && LA3_0<='\uFE34')||(LA3_0>='\uFE4D' && LA3_0<='\uFE4F')||LA3_0=='\uFE69'||(LA3_0>='\uFE70' && LA3_0<='\uFE74')||(LA3_0>='\uFE76' && LA3_0<='\uFEFC')||LA3_0=='\uFEFF'||LA3_0=='\uFF04'||(LA3_0>='\uFF10' && LA3_0<='\uFF19')||(LA3_0>='\uFF21' && LA3_0<='\uFF3A')||LA3_0=='\uFF3F'||(LA3_0>='\uFF41' && LA3_0<='\uFF5A')||(LA3_0>='\uFF65' && LA3_0<='\uFFBE')||(LA3_0>='\uFFC2' && LA3_0<='\uFFC7')||(LA3_0>='\uFFCA' && LA3_0<='\uFFCF')||(LA3_0>='\uFFD2' && LA3_0<='\uFFD7')||(LA3_0>='\uFFDA' && LA3_0<='\uFFDC')||(LA3_0>='\uFFE0' && LA3_0<='\uFFE1')||(LA3_0>='\uFFE5' && LA3_0<='\uFFE6')||(LA3_0>='\uFFF9' && LA3_0<='\uFFFB')) ) {
                    alt3=1;
                }
                else if ( (LA3_0=='\\') ) {
                    alt3=2;
                }


                switch (alt3) {
            	case 1 :
            	    // InternalSARL.g:48763:61: RULE_IDENTIFIER_PART
            	    {
            	    mRULE_IDENTIFIER_PART(); 

            	    }
            	    break;
            	case 2 :
            	    // InternalSARL.g:48763:82: RULE_UNICODE_ESCAPE
            	    {
            	    mRULE_UNICODE_ESCAPE(); 

            	    }
            	    break;

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


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
863445
public final EObject ruleGroup() throws RecognitionException {
        EObject current = null;

        EObject this_AbstractToken_0 = null;

        EObject lv_elements_2_0 = null;



        	enterRule();

        try {
            // InternalXtext.g:1192:2: ( (this_AbstractToken_0= ruleAbstractToken ( () ( (lv_elements_2_0= ruleAbstractToken ) )+ )? ) )
            // InternalXtext.g:1193:2: (this_AbstractToken_0= ruleAbstractToken ( () ( (lv_elements_2_0= ruleAbstractToken ) )+ )? )
            {
            // InternalXtext.g:1193:2: (this_AbstractToken_0= ruleAbstractToken ( () ( (lv_elements_2_0= ruleAbstractToken ) )+ )? )
            // InternalXtext.g:1194:3: this_AbstractToken_0= ruleAbstractToken ( () ( (lv_elements_2_0= ruleAbstractToken ) )+ )?
            {

            			newCompositeNode(grammarAccess.getGroupAccess().getAbstractTokenParserRuleCall_0());
            		
            pushFollow(FollowSets000.FOLLOW_29);
            this_AbstractToken_0=ruleAbstractToken();

            state._fsp--;


            			current = this_AbstractToken_0;
            			afterParserOrEnumRuleCall();
            		
            // InternalXtext.g:1202:3: ( () ( (lv_elements_2_0= ruleAbstractToken ) )+ )?
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( ((LA32_0>=RULE_STRING && LA32_0<=RULE_ID)||LA32_0==15||LA32_0==34||(LA32_0>=39 && LA32_0<=40)||(LA32_0>=42 && LA32_0<=43)) ) {
                alt32=1;
            }
            switch (alt32) {
                case 1 :
                    // InternalXtext.g:1203:4: () ( (lv_elements_2_0= ruleAbstractToken ) )+
                    {
                    // InternalXtext.g:1203:4: ()
                    // InternalXtext.g:1204:5: 
                    {

                    					current = forceCreateModelElementAndAdd(
                    						grammarAccess.getGroupAccess().getGroupElementsAction_1_0(),
                    						current);
                    				

                    }

                    // InternalXtext.g:1210:4: ( (lv_elements_2_0= ruleAbstractToken ) )+
                    int cnt31=0;
                    loop31:
                    do {
                        int alt31=2;
                        int LA31_0 = input.LA(1);

                        if ( ((LA31_0>=RULE_STRING && LA31_0<=RULE_ID)||LA31_0==15||LA31_0==34||(LA31_0>=39 && LA31_0<=40)||(LA31_0>=42 && LA31_0<=43)) ) {
                            alt31=1;
                        }


                        switch (alt31) {
                    	case 1 :
                    	    // InternalXtext.g:1211:5: (lv_elements_2_0= ruleAbstractToken )
                    	    {
                    	    // InternalXtext.g:1211:5: (lv_elements_2_0= ruleAbstractToken )
                    	    // InternalXtext.g:1212:6: lv_elements_2_0= ruleAbstractToken
                    	    {

                    	    						newCompositeNode(grammarAccess.getGroupAccess().getElementsAbstractTokenParserRuleCall_1_1_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_29);
                    	    lv_elements_2_0=ruleAbstractToken();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getGroupRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"elements",
                    	    							lv_elements_2_0,
                    	    							"org.eclipse.xtext.Xtext.AbstractToken");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt31 >= 1 ) break loop31;
                                EarlyExitException eee =
                                    new EarlyExitException(31, input);
                                throw eee;
                        }
                        cnt31++;
                    } while (true);


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
344800
public final EObject ruleXListLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_elements_3_0 = null;

        EObject lv_elements_5_0 = null;



        	enterRule();

        try {
            // InternalXbase.g:2407:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
            // InternalXbase.g:2408:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
            {
            // InternalXbase.g:2408:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
            // InternalXbase.g:2409:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
            {
            // InternalXbase.g:2409:3: ()
            // InternalXbase.g:2410:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
              					current);
              			
            }

            }

            otherlv_1=(Token)match(input,51,FOLLOW_35); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
              		
            }
            otherlv_2=(Token)match(input,54,FOLLOW_36); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
              		
            }
            // InternalXbase.g:2424:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( ((LA39_0>=RULE_STRING && LA39_0<=RULE_ID)||LA39_0==19||(LA39_0>=35 && LA39_0<=36)||LA39_0==41||LA39_0==49||(LA39_0>=51 && LA39_0<=52)||LA39_0==54||LA39_0==58||LA39_0==60||(LA39_0>=64 && LA39_0<=66)||(LA39_0>=69 && LA39_0<=81)||LA39_0==83) ) {
                alt39=1;
            }
            switch (alt39) {
                case 1 :
                    // InternalXbase.g:2425:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                    {
                    // InternalXbase.g:2425:4: ( (lv_elements_3_0= ruleXExpression ) )
                    // InternalXbase.g:2426:5: (lv_elements_3_0= ruleXExpression )
                    {
                    // InternalXbase.g:2426:5: (lv_elements_3_0= ruleXExpression )
                    // InternalXbase.g:2427:6: lv_elements_3_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {

                      						newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
                      					
                    }
                    pushFollow(FOLLOW_37);
                    lv_elements_3_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if (current==null) {
                      							current = createModelElementForParent(grammarAccess.getXListLiteralRule());
                      						}
                      						add(
                      							current,
                      							"elements",
                      							lv_elements_3_0,
                      							"org.eclipse.xtext.xbase.Xbase.XExpression");
                      						afterParserOrEnumRuleCall();
                      					
                    }

                    }


                    }

                    // InternalXbase.g:2444:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                    loop38:
                    do {
                        int alt38=2;
                        int LA38_0 = input.LA(1);

                        if ( (LA38_0==48) ) {
                            alt38=1;
                        }


                        switch (alt38) {
                    	case 1 :
                    	    // InternalXbase.g:2445:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                    	    {
                    	    otherlv_4=(Token)match(input,48,FOLLOW_4); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
                    	      				
                    	    }
                    	    // InternalXbase.g:2449:5: ( (lv_elements_5_0= ruleXExpression ) )
                    	    // InternalXbase.g:2450:6: (lv_elements_5_0= ruleXExpression )
                    	    {
                    	    // InternalXbase.g:2450:6: (lv_elements_5_0= ruleXExpression )
                    	    // InternalXbase.g:2451:7: lv_elements_5_0= ruleXExpression
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      							newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
                    	      						
                    	    }
                    	    pushFollow(FOLLOW_37);
                    	    lv_elements_5_0=ruleXExpression();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      							if (current==null) {
                    	      								current = createModelElementForParent(grammarAccess.getXListLiteralRule());
                    	      							}
                    	      							add(
                    	      								current,
                    	      								"elements",
                    	      								lv_elements_5_0,
                    	      								"org.eclipse.xtext.xbase.Xbase.XExpression");
                    	      							afterParserOrEnumRuleCall();
                    	      						
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

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


                    }
                    break;

            }

            otherlv_6=(Token)match(input,55,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
              		
            }

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
981983
public final EObject ruleKeyword() throws RecognitionException {
        EObject current = null;

        Token lv_value_0_0=null;


        	enterRule();

        try {
            // InternalXtext.g:1533:2: ( ( (lv_value_0_0= RULE_STRING ) ) )
            // InternalXtext.g:1534:2: ( (lv_value_0_0= RULE_STRING ) )
            {
            // InternalXtext.g:1534:2: ( (lv_value_0_0= RULE_STRING ) )
            // InternalXtext.g:1535:3: (lv_value_0_0= RULE_STRING )
            {
            // InternalXtext.g:1535:3: (lv_value_0_0= RULE_STRING )
            // InternalXtext.g:1536:4: lv_value_0_0= RULE_STRING
            {
            lv_value_0_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_2); 

            				newLeafNode(lv_value_0_0, grammarAccess.getKeywordAccess().getValueSTRINGTerminalRuleCall_0());
            			

            				if (current==null) {
            					current = createModelElement(grammarAccess.getKeywordRule());
            				}
            				setWithLastConsumed(
            					current,
            					"value",
            					lv_value_0_0,
            					"org.eclipse.xtext.common.Terminals.STRING");
            			

            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
269501
public final EObject ruleCharacterRange() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_Keyword_0 = null;

        EObject lv_right_3_0 = null;



        	enterRule();

        try {
            // InternalXtext.g:3480:2: ( (this_Keyword_0= ruleKeyword ( () otherlv_2= '..' ( (lv_right_3_0= ruleKeyword ) ) )? ) )
            // InternalXtext.g:3481:2: (this_Keyword_0= ruleKeyword ( () otherlv_2= '..' ( (lv_right_3_0= ruleKeyword ) ) )? )
            {
            // InternalXtext.g:3481:2: (this_Keyword_0= ruleKeyword ( () otherlv_2= '..' ( (lv_right_3_0= ruleKeyword ) ) )? )
            // InternalXtext.g:3482:3: this_Keyword_0= ruleKeyword ( () otherlv_2= '..' ( (lv_right_3_0= ruleKeyword ) ) )?
            {

            			newCompositeNode(grammarAccess.getCharacterRangeAccess().getKeywordParserRuleCall_0());
            		
            pushFollow(FollowSets000.FOLLOW_49);
            this_Keyword_0=ruleKeyword();

            state._fsp--;


            			current = this_Keyword_0;
            			afterParserOrEnumRuleCall();
            		
            // InternalXtext.g:3490:3: ( () otherlv_2= '..' ( (lv_right_3_0= ruleKeyword ) ) )?
            int alt73=2;
            int LA73_0 = input.LA(1);

            if ( (LA73_0==49) ) {
                alt73=1;
            }
            switch (alt73) {
                case 1 :
                    // InternalXtext.g:3491:4: () otherlv_2= '..' ( (lv_right_3_0= ruleKeyword ) )
                    {
                    // InternalXtext.g:3491:4: ()
                    // InternalXtext.g:3492:5: 
                    {

                    					current = forceCreateModelElementAndSet(
                    						grammarAccess.getCharacterRangeAccess().getCharacterRangeLeftAction_1_0(),
                    						current);
                    				

                    }

                    otherlv_2=(Token)match(input,49,FollowSets000.FOLLOW_11); 

                    				newLeafNode(otherlv_2, grammarAccess.getCharacterRangeAccess().getFullStopFullStopKeyword_1_1());
                    			
                    // InternalXtext.g:3502:4: ( (lv_right_3_0= ruleKeyword ) )
                    // InternalXtext.g:3503:5: (lv_right_3_0= ruleKeyword )
                    {
                    // InternalXtext.g:3503:5: (lv_right_3_0= ruleKeyword )
                    // InternalXtext.g:3504:6: lv_right_3_0= ruleKeyword
                    {

                    						newCompositeNode(grammarAccess.getCharacterRangeAccess().getRightKeywordParserRuleCall_1_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_2);
                    lv_right_3_0=ruleKeyword();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getCharacterRangeRule());
                    						}
                    						set(
                    							current,
                    							"right",
                    							lv_right_3_0,
                    							"org.eclipse.xtext.Xtext.Keyword");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
884605
public final void ruleRuleCall() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXtext.g:558:2: ( ( ( rule__RuleCall__Group__0 ) ) )
            // InternalXtext.g:559:2: ( ( rule__RuleCall__Group__0 ) )
            {
            // InternalXtext.g:559:2: ( ( rule__RuleCall__Group__0 ) )
            // InternalXtext.g:560:3: ( rule__RuleCall__Group__0 )
            {
             before(grammarAccess.getRuleCallAccess().getGroup()); 
            // InternalXtext.g:561:3: ( rule__RuleCall__Group__0 )
            // InternalXtext.g:561:4: rule__RuleCall__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RuleCall__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getRuleCallAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
58479
public final EObject ruleAtom() throws RecognitionException {
        EObject current = null;

        Token lv_cardinality_2_1=null;
        Token lv_cardinality_2_2=null;
        Token lv_cardinality_2_3=null;
        EObject this_OtherElement_0 = null;

        EObject this_RuleOptions_3 = null;


         enterRule(); 
            
        try {
            // InternalSimpleAntlr.g:651:28: ( ( (this_OtherElement_0= ruleOtherElement ( () ( ( (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' ) ) ) )? ) | this_RuleOptions_3= ruleRuleOptions ) )
            // InternalSimpleAntlr.g:652:1: ( (this_OtherElement_0= ruleOtherElement ( () ( ( (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' ) ) ) )? ) | this_RuleOptions_3= ruleRuleOptions )
            {
            // InternalSimpleAntlr.g:652:1: ( (this_OtherElement_0= ruleOtherElement ( () ( ( (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' ) ) ) )? ) | this_RuleOptions_3= ruleRuleOptions )
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==RULE_ID||(LA15_0>=RULE_OPEN && LA15_0<=RULE_STRING)||LA15_0==28||LA15_0==36) ) {
                alt15=1;
            }
            else if ( ((LA15_0>=15 && LA15_0<=16)) ) {
                alt15=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;
            }
            switch (alt15) {
                case 1 :
                    // InternalSimpleAntlr.g:652:2: (this_OtherElement_0= ruleOtherElement ( () ( ( (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' ) ) ) )? )
                    {
                    // InternalSimpleAntlr.g:652:2: (this_OtherElement_0= ruleOtherElement ( () ( ( (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' ) ) ) )? )
                    // InternalSimpleAntlr.g:653:2: this_OtherElement_0= ruleOtherElement ( () ( ( (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' ) ) ) )?
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getAtomAccess().getOtherElementParserRuleCall_0_0()); 
                          
                    }
                    pushFollow(FOLLOW_17);
                    this_OtherElement_0=ruleOtherElement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_OtherElement_0; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    // InternalSimpleAntlr.g:664:1: ( () ( ( (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' ) ) ) )?
                    int alt14=2;
                    int LA14_0 = input.LA(1);

                    if ( ((LA14_0>=25 && LA14_0<=27)) ) {
                        alt14=1;
                    }
                    switch (alt14) {
                        case 1 :
                            // InternalSimpleAntlr.g:664:2: () ( ( (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' ) ) )
                            {
                            // InternalSimpleAntlr.g:664:2: ()
                            // InternalSimpleAntlr.g:665:2: 
                            {
                            if ( state.backtracking==0 ) {
                               
                              	  /* */ 
                              	
                            }
                            if ( state.backtracking==0 ) {

                                      current = forceCreateModelElementAndSet(
                                          grammarAccess.getAtomAccess().getElementWithCardinalityElementAction_0_1_0(),
                                          current);
                                  
                            }

                            }

                            // InternalSimpleAntlr.g:673:2: ( ( (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' ) ) )
                            // InternalSimpleAntlr.g:674:1: ( (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' ) )
                            {
                            // InternalSimpleAntlr.g:674:1: ( (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' ) )
                            // InternalSimpleAntlr.g:675:1: (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' )
                            {
                            // InternalSimpleAntlr.g:675:1: (lv_cardinality_2_1= '+' | lv_cardinality_2_2= '*' | lv_cardinality_2_3= '?' )
                            int alt13=3;
                            switch ( input.LA(1) ) {
                            case 25:
                                {
                                alt13=1;
                                }
                                break;
                            case 26:
                                {
                                alt13=2;
                                }
                                break;
                            case 27:
                                {
                                alt13=3;
                                }
                                break;
                            default:
                                if (state.backtracking>0) {state.failed=true; return current;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 13, 0, input);

                                throw nvae;
                            }

                            switch (alt13) {
                                case 1 :
                                    // InternalSimpleAntlr.g:676:3: lv_cardinality_2_1= '+'
                                    {
                                    lv_cardinality_2_1=(Token)match(input,25,FOLLOW_2); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                              newLeafNode(lv_cardinality_2_1, grammarAccess.getAtomAccess().getCardinalityPlusSignKeyword_0_1_1_0_0());
                                          
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getAtomRule());
                                      	        }
                                             		setWithLastConsumed(current, "cardinality", lv_cardinality_2_1, null);
                                      	    
                                    }

                                    }
                                    break;
                                case 2 :
                                    // InternalSimpleAntlr.g:688:8: lv_cardinality_2_2= '*'
                                    {
                                    lv_cardinality_2_2=(Token)match(input,26,FOLLOW_2); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                              newLeafNode(lv_cardinality_2_2, grammarAccess.getAtomAccess().getCardinalityAsteriskKeyword_0_1_1_0_1());
                                          
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getAtomRule());
                                      	        }
                                             		setWithLastConsumed(current, "cardinality", lv_cardinality_2_2, null);
                                      	    
                                    }

                                    }
                                    break;
                                case 3 :
                                    // InternalSimpleAntlr.g:700:8: lv_cardinality_2_3= '?'
                                    {
                                    lv_cardinality_2_3=(Token)match(input,27,FOLLOW_2); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                              newLeafNode(lv_cardinality_2_3, grammarAccess.getAtomAccess().getCardinalityQuestionMarkKeyword_0_1_1_0_2());
                                          
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getAtomRule());
                                      	        }
                                             		setWithLastConsumed(current, "cardinality", lv_cardinality_2_3, null);
                                      	    
                                    }

                                    }
                                    break;

                            }


                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalSimpleAntlr.g:717:2: this_RuleOptions_3= ruleRuleOptions
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getAtomAccess().getRuleOptionsParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_RuleOptions_3=ruleRuleOptions();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_RuleOptions_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
701173
public final EObject ruleXNullLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;


        	enterRule();

        try {
            // InternalPureXbase.g:5338:2: ( ( () otherlv_1= 'null' ) )
            // InternalPureXbase.g:5339:2: ( () otherlv_1= 'null' )
            {
            // InternalPureXbase.g:5339:2: ( () otherlv_1= 'null' )
            // InternalPureXbase.g:5340:3: () otherlv_1= 'null'
            {
            // InternalPureXbase.g:5340:3: ()
            // InternalPureXbase.g:5341:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
              					current);
              			
            }

            }

            otherlv_1=(Token)match(input,76,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
              		
            }

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
668120
public final EObject ruleXBlockExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        EObject lv_expressions_2_0 = null;



        	enterRule();

        try {
            // InternalPureXbase.g:4413:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
            // InternalPureXbase.g:4414:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
            {
            // InternalPureXbase.g:4414:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
            // InternalPureXbase.g:4415:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
            {
            // InternalPureXbase.g:4415:3: ()
            // InternalPureXbase.g:4416:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
              					current);
              			
            }

            }

            otherlv_1=(Token)match(input,59,FOLLOW_41); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
              		
            }
            // InternalPureXbase.g:4426:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
            loop78:
            do {
                int alt78=2;
                int LA78_0 = input.LA(1);

                if ( ((LA78_0>=RULE_STRING && LA78_0<=RULE_ID)||(LA78_0>=14 && LA78_0<=15)||(LA78_0>=18 && LA78_0<=19)||LA78_0==28||(LA78_0>=44 && LA78_0<=45)||LA78_0==50||(LA78_0>=58 && LA78_0<=59)||LA78_0==61||LA78_0==64||LA78_0==66||(LA78_0>=69 && LA78_0<=80)) ) {
                    alt78=1;
                }


                switch (alt78) {
            	case 1 :
            	    // InternalPureXbase.g:4427:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
            	    {
            	    // InternalPureXbase.g:4427:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
            	    // InternalPureXbase.g:4428:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
            	    {
            	    // InternalPureXbase.g:4428:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
            	    // InternalPureXbase.g:4429:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
            	    {
            	    if ( state.backtracking==0 ) {

            	      						newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0());
            	      					
            	    }
            	    pushFollow(FOLLOW_62);
            	    lv_expressions_2_0=ruleXExpressionOrVarDeclaration();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      						if (current==null) {
            	      							current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
            	      						}
            	      						add(
            	      							current,
            	      							"expressions",
            	      							lv_expressions_2_0,
            	      							"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
            	      						afterParserOrEnumRuleCall();
            	      					
            	    }

            	    }


            	    }

            	    // InternalPureXbase.g:4446:4: (otherlv_3= ';' )?
            	    int alt77=2;
            	    int LA77_0 = input.LA(1);

            	    if ( (LA77_0==13) ) {
            	        alt77=1;
            	    }
            	    switch (alt77) {
            	        case 1 :
            	            // InternalPureXbase.g:4447:5: otherlv_3= ';'
            	            {
            	            otherlv_3=(Token)match(input,13,FOLLOW_41); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              					newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
            	              				
            	            }

            	            }
            	            break;

            	    }


            	    }
            	    break;

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

            otherlv_4=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_4, grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3());
              		
            }

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
1039038
RuleReturnScope invoke(Parser parser) throws Exception
    {
        assert parser != null;

        return (RuleReturnScope)method.invoke(parser, arguments);
    }
1212536
public final EObject entryRuleRuleOptions() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRuleOptions = null;


        try {
            // InternalSimpleAntlr.g:1387:2: (iv_ruleRuleOptions= ruleRuleOptions EOF )
            // InternalSimpleAntlr.g:1388:2: iv_ruleRuleOptions= ruleRuleOptions EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRuleOptionsRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleRuleOptions=ruleRuleOptions();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRuleOptions; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
901329
public final EObject ruleNamedArgument() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_calledByName_1_0=null;
        EObject lv_value_2_0 = null;



        	enterRule();

        try {
            // InternalXtext.g:1657:2: ( ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_calledByName_1_0= '=' ) ) )? ( (lv_value_2_0= ruleDisjunction ) ) ) )
            // InternalXtext.g:1658:2: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_calledByName_1_0= '=' ) ) )? ( (lv_value_2_0= ruleDisjunction ) ) )
            {
            // InternalXtext.g:1658:2: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_calledByName_1_0= '=' ) ) )? ( (lv_value_2_0= ruleDisjunction ) ) )
            // InternalXtext.g:1659:3: ( ( (otherlv_0= RULE_ID ) ) ( (lv_calledByName_1_0= '=' ) ) )? ( (lv_value_2_0= ruleDisjunction ) )
            {
            // InternalXtext.g:1659:3: ( ( (otherlv_0= RULE_ID ) ) ( (lv_calledByName_1_0= '=' ) ) )?
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0==RULE_ID) ) {
                int LA42_1 = input.LA(2);

                if ( (LA42_1==35) ) {
                    alt42=1;
                }
            }
            switch (alt42) {
                case 1 :
                    // InternalXtext.g:1660:4: ( (otherlv_0= RULE_ID ) ) ( (lv_calledByName_1_0= '=' ) )
                    {
                    // InternalXtext.g:1660:4: ( (otherlv_0= RULE_ID ) )
                    // InternalXtext.g:1661:5: (otherlv_0= RULE_ID )
                    {
                    // InternalXtext.g:1661:5: (otherlv_0= RULE_ID )
                    // InternalXtext.g:1662:6: otherlv_0= RULE_ID
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getNamedArgumentRule());
                    						}
                    					
                    otherlv_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_36); 

                    						newLeafNode(otherlv_0, grammarAccess.getNamedArgumentAccess().getParameterParameterCrossReference_0_0_0());
                    					

                    }


                    }

                    // InternalXtext.g:1673:4: ( (lv_calledByName_1_0= '=' ) )
                    // InternalXtext.g:1674:5: (lv_calledByName_1_0= '=' )
                    {
                    // InternalXtext.g:1674:5: (lv_calledByName_1_0= '=' )
                    // InternalXtext.g:1675:6: lv_calledByName_1_0= '='
                    {
                    lv_calledByName_1_0=(Token)match(input,35,FollowSets000.FOLLOW_26); 

                    						newLeafNode(lv_calledByName_1_0, grammarAccess.getNamedArgumentAccess().getCalledByNameEqualsSignKeyword_0_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getNamedArgumentRule());
                    						}
                    						setWithLastConsumed(current, "calledByName", true, "=");
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalXtext.g:1688:3: ( (lv_value_2_0= ruleDisjunction ) )
            // InternalXtext.g:1689:4: (lv_value_2_0= ruleDisjunction )
            {
            // InternalXtext.g:1689:4: (lv_value_2_0= ruleDisjunction )
            // InternalXtext.g:1690:5: lv_value_2_0= ruleDisjunction
            {

            					newCompositeNode(grammarAccess.getNamedArgumentAccess().getValueDisjunctionParserRuleCall_1_0());
            				
            pushFollow(FollowSets000.FOLLOW_2);
            lv_value_2_0=ruleDisjunction();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getNamedArgumentRule());
            					}
            					set(
            						current,
            						"value",
            						lv_value_2_0,
            						"org.eclipse.xtext.Xtext.Disjunction");
            					afterParserOrEnumRuleCall();
            				

            }


            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }