docs: private static Type constructWireResponseType(Type resultType, Type wireType) {
          Objects.requireNonNull(resultType);
          Objects.requireNonNull(wireType);
          //
          Type wireResponseType = resultType;
  
          if (resultType == byte[].class) {
              if (wireType == Base64Url.class) {
                  wireResponseType = Base64Url.class;
              }
          } else if (resultType == OffsetDateTime.class) {
              if (wireType == DateTimeRfc1123.class) {
                  wireResponseType = DateTimeRfc1123.class;
              } else if (wireType == UnixTime.class) {
                  wireResponseType = UnixTime.class;
              }
          } else {
              if (TypeUtil.isTypeOrSubTypeOf(resultType, List.class)) {
                  final Type resultElementType = TypeUtil.getTypeArgument(resultType);
                  final Type wireResponseElementType = constructWireResponseType(resultElementType, wireType);
  
                  wireResponseType = TypeUtil.createParameterizedType(
                          (Class<?>) ((ParameterizedType) resultType).getRawType(), wireResponseElementType);
              } else if (TypeUtil.isTypeOrSubTypeOf(resultType, Map.class) || TypeUtil.isTypeOrSubTypeOf(resultType, Response.class)) {
                  Type[] typeArguments = TypeUtil.getTypeArguments(resultType);
                  final Type resultValueType = typeArguments[1];
                  final Type wireResponseValueType = constructWireResponseType(resultValueType, wireType);
  
                  wireResponseType = TypeUtil.createParameterizedType(
                          (Class<?>) ((ParameterizedType) resultType).getRawType(), typeArguments[0], wireResponseValueType);
              }
          }
          return wireResponseType;
      }