docs: private Optional<ExecutableElement> builderMaker(
        Map<String, ExecutableElement> barNoArgMethods, TypeElement barBuilderTypeElement) {
      for (String builderMethodName : BUILDER_METHOD_NAMES) {
        ExecutableElement method = barNoArgMethods.get(builderMethodName);
        if (method != null
            && method.getModifiers().contains(Modifier.STATIC)
            && typeUtils.isSameType(
                typeUtils.erasure(method.getReturnType()),
                typeUtils.erasure(barBuilderTypeElement.asType()))) {
          // TODO(emcmanus): check visibility. We don't want to require public for @AutoValue
          // builders. By not checking visibility we risk accepting something as a builder maker
          // and then failing when the generated code tries to call Bar.builder(). But the risk
          // seems small.
          return Optional.of(method);
        }
      }
      return ElementFilter.constructorsIn(barBuilderTypeElement.getEnclosedElements())
          .stream()
          .filter(c -> c.getParameters().isEmpty())
          .filter(c -> c.getModifiers().contains(Modifier.PUBLIC))
          .findFirst();
    }