import org.checkerframework.framework.qual.DefaultQualifier; import org.checkerframework.framework.qual.TypeUseLocation; import testlib.util.*; class ExtendsDefault { @DefaultQualifier( value = Odd.class, locations = {TypeUseLocation.UPPER_BOUND} ) class MyOddDefault<T> {} class MyNonOddDefault<T> {} void testNonOdd() { //:: error: (type.argument.type.incompatible) MyOddDefault<String> s1; MyNonOddDefault<String> s2; } void testOdd() { MyOddDefault<@Odd String> s1; MyNonOddDefault<@Odd String> s2; } }