static Nullables fromMethods(
      /* @Nullable */ ProcessingEnvironment processingEnv, Collection<ExecutableElement> methods) {
    Optional<AnnotationMirror> nullableTypeAnnotation =
        methods.stream()
            .flatMap(
                method ->
                    Stream.concat(
                        Stream.of(method.getReturnType()),
                        method.getParameters().stream().map(Element::asType)))
            .map(Nullables::nullableIn)
            .filter(Optional::isPresent)
            .findFirst()
            .orElseGet(() -> defaultNullableTypeAnnotation(processingEnv));
    return new Nullables(nullableTypeAnnotation);
  }
Make an instance where the default {@code @Nullable} type annotation is discovered by looking
for methods whose parameter or return types have such an annotation. If there are none, use a
default {@code @Nullable} type annotation if it is available.

@param methods the methods to examine
@param processingEnv the {@link ProcessingEnvironment}, or null if one is unavailable
    (typically in tests)
value/src/main/java/com/google/auto/value/processor/Nullables.java