private Optional<ExecutableElement> addAllPutAll(
      TypeElement barBuilderTypeElement,
      DeclaredType barBuilderDeclaredType,
      TypeMirror barTypeMirror) {
    return MoreElements.getLocalAndInheritedMethods(barBuilderTypeElement, typeUtils, elementUtils)
        .stream()
        .filter(
            method ->
                ADD_ALL_PUT_ALL.contains(method.getSimpleName().toString())
                    && method.getParameters().size() == 1)
        .filter(
            method -> {
              TypeMirror parameterType =
                  MethodSignature.asMemberOf(typeUtils, barBuilderDeclaredType, method)
                      .parameterTypes()
                      .get(0)
                      .getType();
              return typeUtils.isAssignable(barTypeMirror, parameterType);
            })
        .findFirst();
  }
The method to copy another collection into this builder. It is {@code addAll} for
one-dimensional collections like {@code ImmutableList} and {@code ImmutableSet}, and it is
{@code putAll} for two-dimensional collections like {@code ImmutableMap} and {@code
ImmutableTable}.
value/src/main/java/com/google/auto/value/processor/PropertyBuilderClassifier.java