ImmutableMap<ExecutableElement, AnnotatedTypeMirror> propertyMethodsIn(
      Set<ExecutableElement> abstractMethods, TypeElement autoValueOrOneOfType) {
    return abstractMethods.stream()
        .filter(
            method ->
                method.getParameters().isEmpty()
                    && (method.getReturnType().getKind() != TypeKind.VOID || propertiesCanBeVoid())
                    && objectMethodToOverride(method) == ObjectMethod.NONE)
        .collect(
            toImmutableMap(
                method -> method,
                method ->
                    MethodSignature.asMemberOf(typeUtils(), autoValueOrOneOfType, method)
                        .returnType()));
  }
Returns the subset of property methods in the given set of abstract methods, with their actual
return types. A property method has no arguments, is not void, and is not {@code hashCode()} or
{@code toString()}.
value/src/main/java/com/google/auto/value/processor/AutoValueishProcessor.java