import org.checkerframework.checker.nullness.qual.*; public class GenericsBounds3 { class Sup<X extends @NonNull Object> {} //:: error: (type.argument.type.incompatible) class Sub extends Sup<@Nullable Object> {} class SubGood extends Sup<@NonNull Object> {} interface ISup<X extends @NonNull Object> {} //:: error: (type.argument.type.incompatible) class ISub implements ISup<@Nullable Object> {} class ISubGood implements ISup<@NonNull Object> {} //:: error: (type.argument.type.incompatible) class ISub2 extends Sup<Object> implements java.io.Serializable, ISup<@Nullable Object> {} }