docs: @Nullable
      @SuppressWarnings("unchecked")
      Token createToken(
              @NonNull Map<String, Object> tokenParams,
              @NonNull RequestOptions options,
              @NonNull @Token.TokenType String tokenType)
              throws AuthenticationException,
              InvalidRequestException,
              APIConnectionException,
              CardException,
              APIException {
  
          try {
              final String apiKey = options.getPublishableApiKey();
              if (StripeTextUtils.isBlank(apiKey)) {
                  return null;
              }
  
              final List<String> loggingTokens =
                      (List<String>) tokenParams.get(LoggingUtils.FIELD_PRODUCT_USAGE);
              tokenParams.remove(LoggingUtils.FIELD_PRODUCT_USAGE);
  
              logTelemetryData();
  
              final Map<String, Object> loggingParams =
                      mLoggingUtils.getTokenCreationParams(loggingTokens, apiKey, tokenType);
              logApiCall(loggingParams, options);
          } catch (ClassCastException classCastEx) {
              // This can only happen if someone puts a weird object in the map.
              tokenParams.remove(LoggingUtils.FIELD_PRODUCT_USAGE);
          }
  
          return requestToken(getTokensUrl(), tokenParams, options);
      }