class PostConstructAdapter<T> extends TypeAdapter<T> {
    private final TypeAdapter<T> delegate;
    private final Method method;

    public PostConstructAdapter(TypeAdapter<T> delegate, Method method) {
      this.delegate = delegate;
      this.method = method;
    }

    @Override
    public T read(JsonReader in) throws IOException {<FILL_FUNCTION_BODY>}

    @Override
    public void write(JsonWriter out, T value) throws IOException {
      delegate.write(out, value);
    }
  }

      T result = delegate.read(in);
      if (result != null) {
        try {
          method.invoke(result);
        } catch (IllegalAccessException e) {
          throw new AssertionError(e);
        } catch (InvocationTargetException e) {
          if (e.getCause() instanceof RuntimeException) {
            throw (RuntimeException) e.getCause();
          }
          throw new RuntimeException(e.getCause());
        }
      }
      return result;
    
<no_super_class>