docs: public final EObject rulePredicatedRuleCall() throws RecognitionException {
          EObject current = null;
  
          Token lv_predicated_0_0=null;
          Token lv_firstSetPredicated_1_0=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          Token otherlv_7=null;
          EObject lv_arguments_4_0 = null;
  
          EObject lv_arguments_6_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalXtext.g:2244:2: ( ( ( ( (lv_predicated_0_0= '=>' ) ) | ( (lv_firstSetPredicated_1_0= '->' ) ) ) ( ( ruleRuleID ) ) (otherlv_3= '<' ( (lv_arguments_4_0= ruleNamedArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleNamedArgument ) ) )* otherlv_7= '>' )? ) )
              // InternalXtext.g:2245:2: ( ( ( (lv_predicated_0_0= '=>' ) ) | ( (lv_firstSetPredicated_1_0= '->' ) ) ) ( ( ruleRuleID ) ) (otherlv_3= '<' ( (lv_arguments_4_0= ruleNamedArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleNamedArgument ) ) )* otherlv_7= '>' )? )
              {
              // InternalXtext.g:2245:2: ( ( ( (lv_predicated_0_0= '=>' ) ) | ( (lv_firstSetPredicated_1_0= '->' ) ) ) ( ( ruleRuleID ) ) (otherlv_3= '<' ( (lv_arguments_4_0= ruleNamedArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleNamedArgument ) ) )* otherlv_7= '>' )? )
              // InternalXtext.g:2246:3: ( ( (lv_predicated_0_0= '=>' ) ) | ( (lv_firstSetPredicated_1_0= '->' ) ) ) ( ( ruleRuleID ) ) (otherlv_3= '<' ( (lv_arguments_4_0= ruleNamedArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleNamedArgument ) ) )* otherlv_7= '>' )?
              {
              // InternalXtext.g:2246:3: ( ( (lv_predicated_0_0= '=>' ) ) | ( (lv_firstSetPredicated_1_0= '->' ) ) )
              int alt51=2;
              int LA51_0 = input.LA(1);
  
              if ( (LA51_0==42) ) {
                  alt51=1;
              }
              else if ( (LA51_0==43) ) {
                  alt51=2;
              }
              else {
                  NoViableAltException nvae =
                      new NoViableAltException("", 51, 0, input);
  
                  throw nvae;
              }
              switch (alt51) {
                  case 1 :
                      // InternalXtext.g:2247:4: ( (lv_predicated_0_0= '=>' ) )
                      {
                      // InternalXtext.g:2247:4: ( (lv_predicated_0_0= '=>' ) )
                      // InternalXtext.g:2248:5: (lv_predicated_0_0= '=>' )
                      {
                      // InternalXtext.g:2248:5: (lv_predicated_0_0= '=>' )
                      // InternalXtext.g:2249:6: lv_predicated_0_0= '=>'
                      {
                      lv_predicated_0_0=(Token)match(input,42,FollowSets000.FOLLOW_3); 
  
                      						newLeafNode(lv_predicated_0_0, grammarAccess.getPredicatedRuleCallAccess().getPredicatedEqualsSignGreaterThanSignKeyword_0_0_0());
                      					
  
                      						if (current==null) {
                      							current = createModelElement(grammarAccess.getPredicatedRuleCallRule());
                      						}
                      						setWithLastConsumed(current, "predicated", true, "=>");
                      					
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // InternalXtext.g:2262:4: ( (lv_firstSetPredicated_1_0= '->' ) )
                      {
                      // InternalXtext.g:2262:4: ( (lv_firstSetPredicated_1_0= '->' ) )
                      // InternalXtext.g:2263:5: (lv_firstSetPredicated_1_0= '->' )
                      {
                      // InternalXtext.g:2263:5: (lv_firstSetPredicated_1_0= '->' )
                      // InternalXtext.g:2264:6: lv_firstSetPredicated_1_0= '->'
                      {
                      lv_firstSetPredicated_1_0=(Token)match(input,43,FollowSets000.FOLLOW_3); 
  
                      						newLeafNode(lv_firstSetPredicated_1_0, grammarAccess.getPredicatedRuleCallAccess().getFirstSetPredicatedHyphenMinusGreaterThanSignKeyword_0_1_0());
                      					
  
                      						if (current==null) {
                      							current = createModelElement(grammarAccess.getPredicatedRuleCallRule());
                      						}
                      						setWithLastConsumed(current, "firstSetPredicated", true, "->");
                      					
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
              // InternalXtext.g:2277:3: ( ( ruleRuleID ) )
              // InternalXtext.g:2278:4: ( ruleRuleID )
              {
              // InternalXtext.g:2278:4: ( ruleRuleID )
              // InternalXtext.g:2279:5: ruleRuleID
              {
  
              					if (current==null) {
              						current = createModelElement(grammarAccess.getPredicatedRuleCallRule());
              					}
              				
  
              					newCompositeNode(grammarAccess.getPredicatedRuleCallAccess().getRuleAbstractRuleCrossReference_1_0());
              				
              pushFollow(FollowSets000.FOLLOW_21);
              ruleRuleID();
  
              state._fsp--;
  
  
              					afterParserOrEnumRuleCall();
              				
  
              }
  
  
              }
  
              // InternalXtext.g:2293:3: (otherlv_3= '<' ( (lv_arguments_4_0= ruleNamedArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleNamedArgument ) ) )* otherlv_7= '>' )?
              int alt53=2;
              int LA53_0 = input.LA(1);
  
              if ( (LA53_0==27) ) {
                  alt53=1;
              }
              switch (alt53) {
                  case 1 :
                      // InternalXtext.g:2294:4: otherlv_3= '<' ( (lv_arguments_4_0= ruleNamedArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleNamedArgument ) ) )* otherlv_7= '>'
                      {
                      otherlv_3=(Token)match(input,27,FollowSets000.FOLLOW_26); 
  
                      				newLeafNode(otherlv_3, grammarAccess.getPredicatedRuleCallAccess().getLessThanSignKeyword_2_0());
                      			
                      // InternalXtext.g:2298:4: ( (lv_arguments_4_0= ruleNamedArgument ) )
                      // InternalXtext.g:2299:5: (lv_arguments_4_0= ruleNamedArgument )
                      {
                      // InternalXtext.g:2299:5: (lv_arguments_4_0= ruleNamedArgument )
                      // InternalXtext.g:2300:6: lv_arguments_4_0= ruleNamedArgument
                      {
  
                      						newCompositeNode(grammarAccess.getPredicatedRuleCallAccess().getArgumentsNamedArgumentParserRuleCall_2_1_0());
                      					
                      pushFollow(FollowSets000.FOLLOW_23);
                      lv_arguments_4_0=ruleNamedArgument();
  
                      state._fsp--;
  
  
                      						if (current==null) {
                      							current = createModelElementForParent(grammarAccess.getPredicatedRuleCallRule());
                      						}
                      						add(
                      							current,
                      							"arguments",
                      							lv_arguments_4_0,
                      							"org.eclipse.xtext.Xtext.NamedArgument");
                      						afterParserOrEnumRuleCall();
                      					
  
                      }
  
  
                      }
  
                      // InternalXtext.g:2317:4: (otherlv_5= ',' ( (lv_arguments_6_0= ruleNamedArgument ) ) )*
                      loop52:
                      do {
                          int alt52=2;
                          int LA52_0 = input.LA(1);
  
                          if ( (LA52_0==13) ) {
                              alt52=1;
                          }
  
  
                          switch (alt52) {
                      	case 1 :
                      	    // InternalXtext.g:2318:5: otherlv_5= ',' ( (lv_arguments_6_0= ruleNamedArgument ) )
                      	    {
                      	    otherlv_5=(Token)match(input,13,FollowSets000.FOLLOW_26); 
  
                      	    					newLeafNode(otherlv_5, grammarAccess.getPredicatedRuleCallAccess().getCommaKeyword_2_2_0());
                      	    				
                      	    // InternalXtext.g:2322:5: ( (lv_arguments_6_0= ruleNamedArgument ) )
                      	    // InternalXtext.g:2323:6: (lv_arguments_6_0= ruleNamedArgument )
                      	    {
                      	    // InternalXtext.g:2323:6: (lv_arguments_6_0= ruleNamedArgument )
                      	    // InternalXtext.g:2324:7: lv_arguments_6_0= ruleNamedArgument
                      	    {
  
                      	    							newCompositeNode(grammarAccess.getPredicatedRuleCallAccess().getArgumentsNamedArgumentParserRuleCall_2_2_1_0());
                      	    						
                      	    pushFollow(FollowSets000.FOLLOW_23);
                      	    lv_arguments_6_0=ruleNamedArgument();
  
                      	    state._fsp--;
  
  
                      	    							if (current==null) {
                      	    								current = createModelElementForParent(grammarAccess.getPredicatedRuleCallRule());
                      	    							}
                      	    							add(
                      	    								current,
                      	    								"arguments",
                      	    								lv_arguments_6_0,
                      	    								"org.eclipse.xtext.Xtext.NamedArgument");
                      	    							afterParserOrEnumRuleCall();
                      	    						
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop52;
                          }
                      } while (true);
  
                      otherlv_7=(Token)match(input,28,FollowSets000.FOLLOW_2); 
  
                      				newLeafNode(otherlv_7, grammarAccess.getPredicatedRuleCallAccess().getGreaterThanSignKeyword_2_3());
                      			
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
  
              	leaveRule();
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }