docs: public Map<String, Object> evaluateRequestTokenResponse(String responseBody) {
          Map<String, Object> response = new HashMap<String, Object>();
          String endpoint = TwitterConstants.TWITTER_ENDPOINT_REQUEST_TOKEN;
  
          Map<String, String> responseValues = populateResponseValues(responseBody);
  
          Map<String, Object> result = checkForEmptyResponse(endpoint, responseBody, responseValues);
          if (result != null) {
              return result;
          }
  
          // Ensure response contains oauth_callback_confirmed value
          result = checkForRequiredParameters(endpoint, responseValues, TwitterConstants.RESPONSE_OAUTH_CALLBACK_CONFIRMED, TwitterConstants.RESPONSE_OAUTH_TOKEN, TwitterConstants.RESPONSE_OAUTH_TOKEN_SECRET);
          if (result != null) {
              return result;
          }
  
          String callbackConfirmedVal = responseValues.get(TwitterConstants.RESPONSE_OAUTH_CALLBACK_CONFIRMED);
          if (!callbackConfirmedVal.equalsIgnoreCase("true")) {
              return createErrorResponse("TWITTER_RESPONSE_PARAM_WITH_WRONG_VALUE",
                      new Object[] { TwitterConstants.RESPONSE_OAUTH_CALLBACK_CONFIRMED, endpoint, "true", callbackConfirmedVal });
          }
  
          String requestToken = "";
  
          for (Entry<String, String> entry : responseValues.entrySet()) {
              String key = entry.getKey();
              String value = entry.getValue();
  
              if (key.equals(TwitterConstants.RESPONSE_OAUTH_TOKEN)) {
                  requestToken = value;
                  if (requestToken.isEmpty()) {
                      return createErrorResponse("TWITTER_RESPONSE_PARAMETER_EMPTY", new Object[] { TwitterConstants.RESPONSE_OAUTH_TOKEN, endpoint });
                  }
                  if (tc.isDebugEnabled()) {
                      Tr.debug(tc, TwitterConstants.RESPONSE_OAUTH_TOKEN + "=" + requestToken);
                  }
              } else if (key.equals(TwitterConstants.RESPONSE_OAUTH_TOKEN_SECRET)) {
                  tokenSecret = value;
                  if (tokenSecret.isEmpty()) {
                      return createErrorResponse("TWITTER_RESPONSE_PARAMETER_EMPTY", new Object[] { TwitterConstants.RESPONSE_OAUTH_TOKEN_SECRET, endpoint });
                  }
                  if (tc.isDebugEnabled()) {
                      // Request token secrets are short lived, so logging them should not be an issue
                      Tr.debug(tc, TwitterConstants.RESPONSE_OAUTH_TOKEN_SECRET + "=" + tokenSecret);
                  }
              } else if (!key.equals(TwitterConstants.RESPONSE_OAUTH_CALLBACK_CONFIRMED)) {
                  if (tc.isDebugEnabled()) {
                      Tr.debug(tc, "Found an unexpected parameter in the response: " + key + "=" + value);
                  }
              }
          }
  
          response.put(TwitterConstants.RESULT_RESPONSE_STATUS, TwitterConstants.RESULT_SUCCESS);
          response.put(TwitterConstants.RESPONSE_OAUTH_TOKEN, requestToken);
          response.put(TwitterConstants.RESPONSE_OAUTH_TOKEN_SECRET, tokenSecret);
  
          return response;
      }