// Test case for Issue 335: // https://github.com/typetools/checker-framework/issues/335 import org.checkerframework.checker.nullness.qual.Nullable; class Pair<A, B> { static <C, D> Pair<C, D> of(@Nullable C first, @Nullable D second) { throw new RuntimeException(); } } class Optional<S> { static <T> Optional<T> of(T reference) { throw new RuntimeException(); } } class Issue335 { Optional<Pair<String, String>> m(String one, String two) { return Optional.of(Pair.of(one, two)); } }