// Test case for Issue 366: // https://github.com/typetools/checker-framework/issues/366 // @below-java8-jdk-skip-test import java.util.Optional; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; class Test { static Optional<@NonNull String> getPossiblyEmptyString() { return Optional.ofNullable(null); } static Optional<@Nullable String> getPossiblyEmptyString2() { // The optional returned is still @NonNull. //:: error: (return.type.incompatible) return Optional.ofNullable(null); } }