docs: Optional<Builder> getBuilder() {
      Optional<TypeElement> builderTypeElement = Optional.empty();
      for (TypeElement containedClass : ElementFilter.typesIn(autoValueClass.getEnclosedElements())) {
        if (hasAnnotationMirror(containedClass, AUTO_VALUE_BUILDER_NAME)) {
          if (!CLASS_OR_INTERFACE.contains(containedClass.getKind())) {
            errorReporter.reportError(
                "@AutoValue.Builder can only apply to a class or an interface", containedClass);
          } else if (!containedClass.getModifiers().contains(Modifier.STATIC)) {
            errorReporter.reportError(
                "@AutoValue.Builder cannot be applied to a non-static class", containedClass);
          } else if (builderTypeElement.isPresent()) {
            errorReporter.reportError(
                autoValueClass + " already has a Builder: " + builderTypeElement.get(),
                containedClass);
          } else {
            builderTypeElement = Optional.of(containedClass);
          }
        }
      }
  
      if (builderTypeElement.isPresent()) {
        return builderFrom(builderTypeElement.get());
      } else {
        return Optional.empty();
      }
    }