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;
    }
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 { { { { { if ( current == null ) { current = createModelElement ( grammarAccess . getRuleCallRule ( ) ) ; } newCompositeNode ( grammarAccess . getRuleCallAccess ( ) . getRuleAbstractRuleCrossReference_0_0 ( ) ) ; pushFollow ( FollowSets000 . FOLLOW_21 ) ; ruleRuleID ( ) ; state . _fsp -- ; afterParserOrEnumRuleCall ( ) ; } } int alt41 = 2 ; int LA41_0 = input . LA ( 1 ) ; if ( ( LA41_0 == 27 ) ) { alt41 = 1 ; } switch ( alt41 ) { case 1 : { otherlv_1 = ( Token ) match ( input , 27 , FollowSets000 . FOLLOW_26 ) ; newLeafNode ( otherlv_1 , grammarAccess . getRuleCallAccess ( ) . getLessThanSignKeyword_1_0 ( ) ) ; { { 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 ( ) ; } } loop40 : do { int alt40 = 2 ; int LA40_0 = input . LA ( 1 ) ; if ( ( LA40_0 == 13 ) ) { alt40 = 1 ; } switch ( alt40 ) { case 1 : { otherlv_3 = ( Token ) match ( input , 13 , FollowSets000 . FOLLOW_26 ) ; newLeafNode ( otherlv_3 , grammarAccess . getRuleCallAccess ( ) . getCommaKeyword_1_2_0 ( ) ) ; { { 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 ; }
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= '>' )? ) ;