private Property newProperty(
      VariableElement var,
      String identifier,
      String getterName,
      Optional<String> builderInitializer,
      boolean hasDefault,
      Nullables nullables) {
    String name = var.getSimpleName().toString();
    TypeMirror type = var.asType();
    Optional<String> nullableAnnotation = nullableAnnotationFor(var, var.asType());
    return new Property(
        name,
        identifier,
        TypeEncoder.encodeWithAnnotations(type),
        new AnnotatedTypeMirror(type),
        nullableAnnotation,
        nullables,
        getterName,
        builderInitializer,
        hasDefault);
  }
Generates a class that will call the synthetic Kotlin constructor that is used to specify which
optional parameters are defaulted. Because it is synthetic, it can't be called from Java source
code. Instead, Java source code calls the {@code of} method in the class we generate here.
value/src/main/java/com/google/auto/value/processor/AutoBuilderProcessor.java