@Override
        CodeBlock setMemoized() {
          return CodeBlock.builder()
              .beginControlFlow("if ($N == null)", cacheField)
              .addStatement(
                  "throw new NullPointerException($S)",
                  method.getSimpleName() + "() cannot return null")
              .endControlFlow()
              .build();
        }
Builds a {@link FieldSpec} for use in property caching. Field will be {@code private
transient volatile} and have the given type and name. If the @LazyInit annotation is
available it is added as well.
value/src/main/java/com/google/auto/value/extension/memoized/processor/MemoizeExtension.java