code: public Response handle(
              AuthleteApi api, TokenRequestHandlerSpi spi,
              MultivaluedMap<String, String> parameters, String authorization, String[] clientCertificatePath)
      {
          try
          {
              // Create a handler.
              TokenRequestHandler handler = new TokenRequestHandler(api, spi);
  
              // Delegate the task to the handler.
              return handler.handle(parameters, authorization, clientCertificatePath);
          }
          catch (WebApplicationException e)
          {
              // An error occurred in the handler.
              onError(e);
  
              // Convert the error to a Response.
              return e.getResponse();
          }
      }
docs: Handle a token request.
  
  <p>
  This method internally creates a {@link TokenRequestHandler} instance and
  calls its {@link TokenRequestHandler#handle(MultivaluedMap, String)} method.
  Then, this method uses the value returned from the {@code handle()} method
  as a response from this method.
  </p>
  
  <p>
  When {@code TokenRequestHandler.handle()} method raises a {@link
  WebApplicationException}, this method calls {@link #onError(WebApplicationException)
  onError()} method with the exception. The default implementation of {@code onError()}
  does nothing. You can override the method as necessary. After calling
  {@code onError()} method, this method calls {@code getResponse()} method of
  the exception and uses the returned value as a response from this method.
  </p>
  
  @param api
  An implementation of {@link AuthleteApi}.
  
  @param spi
  An implementation of {@link TokenRequestHandlerSpi}.
  
  @param parameters
  Request parameters of the token request.
  
  @param authorization
  The value of {@code Authorization} header of the token request.
  
  @param clientCertificatePath
  The certificate path used in mutual TLS authentication, in PEM format. The
  client's own certificate is the first in this array. Can be {@code null}.
  
  @return
  A response that should be returned to the client application.
  
  @since 2.8