import org.checkerframework.checker.nullness.qual.*; interface Supplier<T extends @NonNull Object> { T supply(); } interface Supplier2<T extends @Nullable Object> { T supply(); } class GroundTargetType { static @Nullable Object myMethod() { return null; } //:: error: (type.argument.type.incompatible) Supplier<? extends @Nullable Object> fn = GroundTargetType::myMethod; //:: error: (methodref.return.invalid) Supplier<? extends @NonNull Object> fn2 = GroundTargetType::myMethod; // Supplier2 //:: error: (methodref.return.invalid) Supplier2<? extends @NonNull Object> fn3 = GroundTargetType::myMethod; }