code: private static Object deserializeBody(String value, Type resultType, Type wireType, SerializerAdapter serializer, SerializerEncoding encoding) throws IOException {
          if (wireType == null) {
              return serializer.deserialize(value, resultType, encoding);
          } else if (TypeUtil.isTypeOrSubTypeOf(wireType, Page.class)) {
              return deserializePage(value, resultType, wireType, serializer, encoding);
          } else {
              final Type wireResponseType = constructWireResponseType(resultType, wireType);
              final Object wireResponse = serializer.deserialize(value, wireResponseType, encoding);
  
              return convertToResultType(wireResponse, resultType, wireType);
          }
      }
docs: Deserialize the given string value representing content of a REST API response.
  
  If the {@link ReturnValueWireType} is of type {@link Page}, then the returned object will be an instance of that
  {@param wireType}. Otherwise, the returned object is converted back to its {@param resultType}.
  
  @param value the string value to deserialize
  @param resultType the return type of the java proxy method
  @param wireType value of optional {@link ReturnValueWireType} annotation present in java proxy method indicating
  'entity type' (wireType) of REST API wire response body
  @param encoding the encoding format of value
  @return Deserialized object
  @throws IOException When the body cannot be deserialized