docs: public final EObject ruleTerminalTokenElement() throws RecognitionException {
          EObject current = null;
  
          EObject this_CharacterRange_0 = null;
  
          EObject this_TerminalRuleCall_1 = null;
  
          EObject this_ParenthesizedTerminalElement_2 = null;
  
          EObject this_AbstractNegatedToken_3 = null;
  
          EObject this_Wildcard_4 = null;
  
          EObject this_EOF_5 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalXtext.g:3193:2: ( (this_CharacterRange_0= ruleCharacterRange | this_TerminalRuleCall_1= ruleTerminalRuleCall | this_ParenthesizedTerminalElement_2= ruleParenthesizedTerminalElement | this_AbstractNegatedToken_3= ruleAbstractNegatedToken | this_Wildcard_4= ruleWildcard | this_EOF_5= ruleEOF ) )
              // InternalXtext.g:3194:2: (this_CharacterRange_0= ruleCharacterRange | this_TerminalRuleCall_1= ruleTerminalRuleCall | this_ParenthesizedTerminalElement_2= ruleParenthesizedTerminalElement | this_AbstractNegatedToken_3= ruleAbstractNegatedToken | this_Wildcard_4= ruleWildcard | this_EOF_5= ruleEOF )
              {
              // InternalXtext.g:3194:2: (this_CharacterRange_0= ruleCharacterRange | this_TerminalRuleCall_1= ruleTerminalRuleCall | this_ParenthesizedTerminalElement_2= ruleParenthesizedTerminalElement | this_AbstractNegatedToken_3= ruleAbstractNegatedToken | this_Wildcard_4= ruleWildcard | this_EOF_5= ruleEOF )
              int alt71=6;
              switch ( input.LA(1) ) {
              case RULE_STRING:
                  {
                  alt71=1;
                  }
                  break;
              case RULE_ID:
              case 39:
              case 40:
                  {
                  alt71=2;
                  }
                  break;
              case 15:
                  {
                  alt71=3;
                  }
                  break;
              case 41:
              case 43:
                  {
                  alt71=4;
                  }
                  break;
              case 17:
                  {
                  alt71=5;
                  }
                  break;
              case 48:
                  {
                  alt71=6;
                  }
                  break;
              default:
                  NoViableAltException nvae =
                      new NoViableAltException("", 71, 0, input);
  
                  throw nvae;
              }
  
              switch (alt71) {
                  case 1 :
                      // InternalXtext.g:3195:3: this_CharacterRange_0= ruleCharacterRange
                      {
  
                      			newCompositeNode(grammarAccess.getTerminalTokenElementAccess().getCharacterRangeParserRuleCall_0());
                      		
                      pushFollow(FollowSets000.FOLLOW_2);
                      this_CharacterRange_0=ruleCharacterRange();
  
                      state._fsp--;
  
  
                      			current = this_CharacterRange_0;
                      			afterParserOrEnumRuleCall();
                      		
  
                      }
                      break;
                  case 2 :
                      // InternalXtext.g:3204:3: this_TerminalRuleCall_1= ruleTerminalRuleCall
                      {
  
                      			newCompositeNode(grammarAccess.getTerminalTokenElementAccess().getTerminalRuleCallParserRuleCall_1());
                      		
                      pushFollow(FollowSets000.FOLLOW_2);
                      this_TerminalRuleCall_1=ruleTerminalRuleCall();
  
                      state._fsp--;
  
  
                      			current = this_TerminalRuleCall_1;
                      			afterParserOrEnumRuleCall();
                      		
  
                      }
                      break;
                  case 3 :
                      // InternalXtext.g:3213:3: this_ParenthesizedTerminalElement_2= ruleParenthesizedTerminalElement
                      {
  
                      			newCompositeNode(grammarAccess.getTerminalTokenElementAccess().getParenthesizedTerminalElementParserRuleCall_2());
                      		
                      pushFollow(FollowSets000.FOLLOW_2);
                      this_ParenthesizedTerminalElement_2=ruleParenthesizedTerminalElement();
  
                      state._fsp--;
  
  
                      			current = this_ParenthesizedTerminalElement_2;
                      			afterParserOrEnumRuleCall();
                      		
  
                      }
                      break;
                  case 4 :
                      // InternalXtext.g:3222:3: this_AbstractNegatedToken_3= ruleAbstractNegatedToken
                      {
  
                      			newCompositeNode(grammarAccess.getTerminalTokenElementAccess().getAbstractNegatedTokenParserRuleCall_3());
                      		
                      pushFollow(FollowSets000.FOLLOW_2);
                      this_AbstractNegatedToken_3=ruleAbstractNegatedToken();
  
                      state._fsp--;
  
  
                      			current = this_AbstractNegatedToken_3;
                      			afterParserOrEnumRuleCall();
                      		
  
                      }
                      break;
                  case 5 :
                      // InternalXtext.g:3231:3: this_Wildcard_4= ruleWildcard
                      {
  
                      			newCompositeNode(grammarAccess.getTerminalTokenElementAccess().getWildcardParserRuleCall_4());
                      		
                      pushFollow(FollowSets000.FOLLOW_2);
                      this_Wildcard_4=ruleWildcard();
  
                      state._fsp--;
  
  
                      			current = this_Wildcard_4;
                      			afterParserOrEnumRuleCall();
                      		
  
                      }
                      break;
                  case 6 :
                      // InternalXtext.g:3240:3: this_EOF_5= ruleEOF
                      {
  
                      			newCompositeNode(grammarAccess.getTerminalTokenElementAccess().getEOFParserRuleCall_5());
                      		
                      pushFollow(FollowSets000.FOLLOW_2);
                      this_EOF_5=ruleEOF();
  
                      state._fsp--;
  
  
                      			current = this_EOF_5;
                      			afterParserOrEnumRuleCall();
                      		
  
                      }
                      break;
  
              }
  
  
              }
  
  
              	leaveRule();
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }