import java.util.List;
import org.checkerframework.checker.nullness.qual.*;
import org.checkerframework.framework.qual.DefaultQualifier;
import org.checkerframework.framework.qual.TypeUseLocation;

public class MethodTypeVars4 {
  @DefaultQualifier(value = NonNull.class, locations = TypeUseLocation.IMPLICIT_UPPER_BOUND)
  interface I {
    <T> T doit();

    <T> List<T> doit2();

    <T extends @Nullable Object> T doit3();
  }

  void f1(I i) {
    // s is implicitly Nullable
    String s = i.doit();
    List<String> ls = i.doit2();
    String s2 = i.doit3();
  }

  void f2(I i) {
    @NonNull String s = i.doit();
    s = i.doit3();
    // :: error: (type.argument)
    List<@Nullable String> ls = i.doit2();
  }
}
