code: private Object buildBody(int statusCode, ResponseBody responseBody) throws IOException {
          if (responseBody == null) {
              return null;
          }
  
          Type type;
          if (responseTypes.containsKey(statusCode)) {
              type = responseTypes.get(statusCode);
          } else if (responseTypes.get(0) != Object.class) {
              type = responseTypes.get(0);
          } else {
              type = new TypeReference<T>() { }.getType();
          }
  
          // Void response
          if (type == Void.class) {
              return null;
          }
          // Return raw response if InputStream is the target type
          else if (type == InputStream.class) {
              return responseBody.byteStream();
          }
          // Deserialize
          else {
              String responseContent = responseBody.source().buffer().readUtf8();
              if (responseContent.length() <= 0) {
                  return null;
              }
              return serializerAdapter.deserialize(responseContent, type);
          }
      }
docs: Builds the body object from the HTTP status code and returned response
  body undeserialized and wrapped in {@link ResponseBody}.
  
  @param statusCode the HTTP status code
  @param responseBody the response body
  @return the response body, deserialized
  @throws IOException thrown for any deserialization errors