import org.checkerframework.checker.initialization.qual.*; import org.checkerframework.checker.nullness.qual.*; public class RawCheckRep { Object x; RawCheckRep() { x = "hello"; checkRep(); checkRep2(this); checkRepb(); checkRep2b(this); } void checkRep( @UnderInitialization(RawCheckRep.class) @Raw(RawCheckRep.class) RawCheckRep this) { x.toString(); } static void checkRep2( @UnderInitialization(RawCheckRep.class) @Raw(RawCheckRep.class) RawCheckRep o) { o.x.toString(); } void checkRepb(@UnderInitialization(Object.class) @Raw(Object.class) RawCheckRep this) { //:: error: (dereference.of.nullable) x.toString(); } static void checkRep2b(@UnderInitialization(Object.class) @Raw(Object.class) RawCheckRep o) { //:: error: (dereference.of.nullable) o.x.toString(); } } class A { String a; public A() { a = ""; } } class B extends A { String b; public B() { b = ""; } void t1(@UnderInitialization(Object.class) @Raw(Object.class) B x) { //:: error: (dereference.of.nullable) x.a.toString(); //:: error: (dereference.of.nullable) x.b.toString(); } void t2(@UnderInitialization(A.class) @Raw(A.class) B x) { x.a.toString(); //:: error: (dereference.of.nullable) x.b.toString(); } void t3(@UnderInitialization(B.class) @Raw(B.class) B x) { x.a.toString(); x.b.toString(); } }