docs: public final EObject rulePredicatedKeyword() throws RecognitionException {
          EObject current = null;
  
          Token lv_predicated_0_0=null;
          Token lv_firstSetPredicated_1_0=null;
          Token lv_value_2_0=null;
  
  
          	enterRule();
  
          try {
              // InternalXtext.g:2176:2: ( ( ( ( (lv_predicated_0_0= '=>' ) ) | ( (lv_firstSetPredicated_1_0= '->' ) ) ) ( (lv_value_2_0= RULE_STRING ) ) ) )
              // InternalXtext.g:2177:2: ( ( ( (lv_predicated_0_0= '=>' ) ) | ( (lv_firstSetPredicated_1_0= '->' ) ) ) ( (lv_value_2_0= RULE_STRING ) ) )
              {
              // InternalXtext.g:2177:2: ( ( ( (lv_predicated_0_0= '=>' ) ) | ( (lv_firstSetPredicated_1_0= '->' ) ) ) ( (lv_value_2_0= RULE_STRING ) ) )
              // InternalXtext.g:2178:3: ( ( (lv_predicated_0_0= '=>' ) ) | ( (lv_firstSetPredicated_1_0= '->' ) ) ) ( (lv_value_2_0= RULE_STRING ) )
              {
              // InternalXtext.g:2178:3: ( ( (lv_predicated_0_0= '=>' ) ) | ( (lv_firstSetPredicated_1_0= '->' ) ) )
              int alt50=2;
              int LA50_0 = input.LA(1);
  
              if ( (LA50_0==42) ) {
                  alt50=1;
              }
              else if ( (LA50_0==43) ) {
                  alt50=2;
              }
              else {
                  NoViableAltException nvae =
                      new NoViableAltException("", 50, 0, input);
  
                  throw nvae;
              }
              switch (alt50) {
                  case 1 :
                      // InternalXtext.g:2179:4: ( (lv_predicated_0_0= '=>' ) )
                      {
                      // InternalXtext.g:2179:4: ( (lv_predicated_0_0= '=>' ) )
                      // InternalXtext.g:2180:5: (lv_predicated_0_0= '=>' )
                      {
                      // InternalXtext.g:2180:5: (lv_predicated_0_0= '=>' )
                      // InternalXtext.g:2181:6: lv_predicated_0_0= '=>'
                      {
                      lv_predicated_0_0=(Token)match(input,42,FollowSets000.FOLLOW_11); 
  
                      						newLeafNode(lv_predicated_0_0, grammarAccess.getPredicatedKeywordAccess().getPredicatedEqualsSignGreaterThanSignKeyword_0_0_0());
                      					
  
                      						if (current==null) {
                      							current = createModelElement(grammarAccess.getPredicatedKeywordRule());
                      						}
                      						setWithLastConsumed(current, "predicated", true, "=>");
                      					
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // InternalXtext.g:2194:4: ( (lv_firstSetPredicated_1_0= '->' ) )
                      {
                      // InternalXtext.g:2194:4: ( (lv_firstSetPredicated_1_0= '->' ) )
                      // InternalXtext.g:2195:5: (lv_firstSetPredicated_1_0= '->' )
                      {
                      // InternalXtext.g:2195:5: (lv_firstSetPredicated_1_0= '->' )
                      // InternalXtext.g:2196:6: lv_firstSetPredicated_1_0= '->'
                      {
                      lv_firstSetPredicated_1_0=(Token)match(input,43,FollowSets000.FOLLOW_11); 
  
                      						newLeafNode(lv_firstSetPredicated_1_0, grammarAccess.getPredicatedKeywordAccess().getFirstSetPredicatedHyphenMinusGreaterThanSignKeyword_0_1_0());
                      					
  
                      						if (current==null) {
                      							current = createModelElement(grammarAccess.getPredicatedKeywordRule());
                      						}
                      						setWithLastConsumed(current, "firstSetPredicated", true, "->");
                      					
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
              // InternalXtext.g:2209:3: ( (lv_value_2_0= RULE_STRING ) )
              // InternalXtext.g:2210:4: (lv_value_2_0= RULE_STRING )
              {
              // InternalXtext.g:2210:4: (lv_value_2_0= RULE_STRING )
              // InternalXtext.g:2211:5: lv_value_2_0= RULE_STRING
              {
              lv_value_2_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_2); 
  
              					newLeafNode(lv_value_2_0, grammarAccess.getPredicatedKeywordAccess().getValueSTRINGTerminalRuleCall_1_0());
              				
  
              					if (current==null) {
              						current = createModelElement(grammarAccess.getPredicatedKeywordRule());
              					}
              					setWithLastConsumed(
              						current,
              						"value",
              						lv_value_2_0,
              						"org.eclipse.xtext.common.Terminals.STRING");
              				
  
              }
  
  
              }
  
  
              }
  
  
              }
  
  
              	leaveRule();
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }