code: protected <T> Optional<T> executePostRequest(URI uri, Object obj, GenericType<T> returnType)
      {
          return executePostRequest(uri, obj, null, returnType);
      }
docs: Execute a POST request with a return object.
  @param <T> The type parameter used for the return object
  @param uri The URI to call
  @param obj The object to use for the POST
  @param returnType The type to marshall the result back into
  @return The return type