import org.checkerframework.checker.nullness.qual.*; public class Issue459 { public class Generic<K, V> {} interface Iface<K, V> { public <K1 extends K, V1 extends V> Generic<K, V> foo(Generic<? super K1, ? super V1> arg); public <K2 extends K, V2 extends V> Generic<K, V> foo2( Generic<? super K2, ? super V2> arg, K2 strArg); } void f(Iface<Object, Object> arg, @NonNull String nnString) { final Generic<String, Integer> obj = new Generic<String, Integer>(); arg.foo(obj); final Generic<@Nullable String, Integer> obj2 = new Generic<@Nullable String, Integer>(); arg.foo2(obj2, nnString); } }