docs: @SuppressWarnings("unchecked")
      public <T> T deserialize(Response response, Type returnType) throws ApiException {
          if (response == null || returnType == null) {
              return null;
          }
  
          if ("byte[]".equals(returnType.toString())) {
              // Handle binary response (byte array).
              try {
                  return (T) response.body().bytes();
              } catch (IOException e) {
                  throw new ApiException(e);
              }
          } else if (returnType.equals(File.class)) {
              // Handle file downloading.
              return (T) downloadFileFromResponse(response);
          }
  
          String respBody;
          try {
              if (response.body() != null)
                  respBody = response.body().string();
              else
                  respBody = null;
          } catch (IOException e) {
              throw new ApiException(e);
          }
  
          if (respBody == null || "".equals(respBody)) {
              return null;
          }
  
          String contentType = response.headers().get("Content-Type");
          if (contentType == null) {
              // ensuring a default content type
              contentType = "application/json";
          }
          if (isJsonMime(contentType)) {
              return json.deserialize(respBody, returnType);
          } else if (returnType.equals(String.class)) {
              // Expecting string, return the raw response body.
              return (T) respBody;
          } else {
              throw new ApiException(
                      "Content type \"" + contentType + "\" is not supported for type: " + returnType,
                      response.code(),
                      response.headers().toMultimap(),
                      respBody);
          }
      }