code: private AuthleteApiException createApiException(Throwable cause, Response response)
      {
          // Error message.
          String message = cause.getMessage();
  
          if (response == null)
          {
              // Create an exception without HTTP response information.
              return new AuthleteApiException(message, cause);
          }
  
          // Status code and status message.
          int statusCode = 0;
          String statusMessage = null;
  
          // Get the status information.
          StatusType type = response.getStatusInfo();
          if (type != null)
          {
              statusCode    = type.getStatusCode();
              statusMessage = type.getReasonPhrase();
          }
  
          // Response body.
          String responseBody = null;
  
          // If the response has response body.
          if (hasEntity(response))
          {
              // Get the response body.
              responseBody = extractResponseBody(response);
          }
  
          // Response headers.
          Map<String, List<String>> headers = response.getStringHeaders();
  
          // Create an exception with HTTP response information.
          return new AuthleteApiException(message, cause, statusCode, statusMessage, responseBody, headers);
      }
docs: Create an {@link AuthleteApiException} instance.