import org.jspecify.annotations.*; @DefaultNonNull public class AnnotatedBoundsOfWildcard { public void superAsIs(Test a) {} public void superNotNull(Test a) {} public void superNullable(Test a) {} public void extendsAsIs(Test a) {} public void extendsNotNull(Test a) {} public void extendsNullable(Test a) {} public void noBounds(Test<@NullnessUnspecified ?, @NullnessUnspecified ?, @NullnessUnspecified ?> a) {} } class Base {} class Derived extends Base {} @DefaultNonNull class Test { } @DefaultNonNull class Use { public void main( Test aNotNullNotNullNotNull, Test aNotNullNotNullNull, Test aNotNullNullNotNull, Test aNotNullNullNull, Test aObjectNotNullNotNullNotNull, Test aObjectNotNullNotNullNull, Test aObjectNotNullNullNotNull, Test aObjectNotNullNullNull, AnnotatedBoundsOfWildcard b ) { // jspecify_nullness_mismatch b.superAsIs(aObjectNotNullNotNullNotNull); // jspecify_nullness_mismatch b.superAsIs(aObjectNotNullNotNullNull); b.superAsIs(aObjectNotNullNullNotNull); b.superAsIs(aObjectNotNullNullNull); b.superNotNull(aObjectNotNullNotNullNotNull); b.superNotNull(aObjectNotNullNotNullNull); b.superNotNull(aObjectNotNullNullNotNull); b.superNotNull(aObjectNotNullNullNull); // jspecify_nullness_mismatch b.superNullable(aObjectNotNullNotNullNotNull); // jspecify_nullness_mismatch b.superNullable(aObjectNotNullNotNullNull); // jspecify_nullness_mismatch b.superNullable(aObjectNotNullNullNotNull); // jspecify_nullness_mismatch b.superNullable(aObjectNotNullNullNull); b.extendsAsIs(aNotNullNotNullNotNull); b.extendsAsIs(aNotNullNotNullNull); b.extendsAsIs(aNotNullNullNotNull); b.extendsAsIs(aNotNullNullNull); b.extendsNotNull(aNotNullNotNullNotNull); // jspecify_nullness_mismatch b.extendsNotNull(aNotNullNotNullNull); // jspecify_nullness_mismatch b.extendsNotNull(aNotNullNullNotNull); // jspecify_nullness_mismatch b.extendsNotNull(aNotNullNullNull); b.extendsNullable(aNotNullNotNullNotNull); b.extendsNullable(aNotNullNotNullNull); b.extendsNullable(aNotNullNullNotNull); b.extendsNullable(aNotNullNullNull); b.noBounds(aNotNullNotNullNotNull); b.noBounds(aNotNullNotNullNull); b.noBounds(aNotNullNullNotNull); b.noBounds(aNotNullNullNull); } }