import org.checkerframework.checker.nullness.qual.*; class RawTypes { void m() throws ClassNotFoundException { Class c1 = Class.forName("bla"); Class<? extends @Nullable Object> c2 = Class.forName("bla"); } class Test<X extends Number> {} void bar() { // Java will complain about this: // Test x = new Test<Object>(); // ok Test y = new Test<Integer>(); //:: error: (type.argument.type.incompatible) Test z = new Test<@Nullable Integer>(); } void m(java.lang.reflect.Constructor<?> c) { Class cls1 = c.getParameterTypes()[0]; Class<? extends @Nullable Object> cls2 = c.getParameterTypes()[0]; } }