docs: public <T extends Message> ObjectOrStatus<T> request(
        T.Builder builder, String path, String method, T body, String apiVersion, String kind)
        throws ApiException, IOException {
      HashMap<String, String> headers = new HashMap<>();
      headers.put("Content-Type", MEDIA_TYPE);
      headers.put("Accept", MEDIA_TYPE);
      String[] localVarAuthNames = new String[] {"BearerToken"};
      Request request =
          apiClient.buildRequest(
              path,
              method,
              new ArrayList<Pair>(),
              new ArrayList<Pair>(),
              null,
              headers,
              new HashMap<String, Object>(),
              localVarAuthNames,
              null);
      if (body != null) {
        byte[] bytes = encode(body, apiVersion, kind);
        switch (method) {
          case "POST":
            request =
                request
                    .newBuilder()
                    .post(RequestBody.create(MediaType.parse(MEDIA_TYPE), bytes))
                    .build();
            break;
          case "PUT":
            request =
                request
                    .newBuilder()
                    .put(RequestBody.create(MediaType.parse(MEDIA_TYPE), bytes))
                    .build();
            break;
          case "PATCH":
            request =
                request
                    .newBuilder()
                    .patch(RequestBody.create(MediaType.parse(MEDIA_TYPE), bytes))
                    .build();
            break;
          default:
            throw new ApiException("Unknown proto client API method: " + method);
        }
      }
      Response resp = apiClient.getHttpClient().newCall(request).execute();
      Unknown u = parse(resp.body().byteStream());
      resp.body().close();
  
      if (u.getTypeMeta().getApiVersion().equals("v1")
          && u.getTypeMeta().getKind().equals("Status")) {
        Status status = Status.newBuilder().mergeFrom(u.getRaw()).build();
        return new ObjectOrStatus(null, status);
      }
  
      return new ObjectOrStatus((T) builder.mergeFrom(u.getRaw()).build(), null);
    }