private MethodSpec readResolve() {
      return MethodSpec.methodBuilder("readResolve")
          .returns(Object.class)
          .addException(Exception.class)
          .addStatement(
              "return new $T($L)",
              outerClassTypeName,
              CodeBlock.join(
                  propertyMirrors.stream().map(this::resolve).collect(toImmutableList()), ", "))
          .build();
    }
Creates an implementation of {@code readResolve} that returns the serializable values in the
Proxy object back to their original types.
value/src/main/java/com/google/auto/value/extension/serializable/processor/SerializableAutoValueExtension.java