code: <T> Class<?> transform(Class<T> proxyInterface) {
      try {
        String packageName = proxyInterface.getPackage().getName();
        String genericProxyInterfaceName =
            packageName + "." + PROXY_PREFIX + proxyInterface.getSimpleName();
        try {
          return Class.forName(genericProxyInterfaceName);
        } catch (ClassNotFoundException e) {
          pool.insertClassPath(new ClassClassPath(proxyInterface));
          CtClass copy = pool.getAndRename(proxyInterface.getName(), genericProxyInterfaceName);
          replaceGenericResponseMethods(copy);
  
          return copy
              .toClass(this.getClass().getClassLoader(), this.getClass().getProtectionDomain());
        }
      } catch (NotFoundException e) {
        throw new RuntimeException(e);
      } catch (CannotCompileException e) {
        throw new RuntimeException(e);
      } catch (BadBytecode e) {
        throw new RuntimeException(e);
      }
    }
docs: Transforms the given interface, creating a duplicate interface with return types
  {@link GenericResponse} replaced with {@link Response}.