code: static String generatedClassName(TypeElement type, String prefix) {
      String name = type.getSimpleName().toString();
      while (type.getEnclosingElement() instanceof TypeElement) {
        type = (TypeElement) type.getEnclosingElement();
        name = type.getSimpleName() + "_" + name;
      }
      String pkg = TypeSimplifier.packageNameOf(type);
      String dot = pkg.isEmpty() ? "" : ".";
      return pkg + dot + prefix + name;
    }
docs: Returns the name of the generated {@code @AutoValue} or {@code @AutoOneOf} class, for example
  {@code AutoOneOf_TaskResult} or {@code $$AutoValue_SimpleMethod}.
  
  @param type the name of the type bearing the {@code @AutoValue} or {@code @AutoOneOf}
  annotation.
  @param prefix the prefix to use in the generated class. This may start with one or more dollar
  signs, for an {@code @AutoValue} implementation where there are AutoValue extensions.