import checkers.nullness.quals.*; class Raw2 { private @NonNull Object field; public Raw2() { try { this.method(this); } catch (NullPointerException e) { e.printStackTrace(); } field = 0L; } private void method(@Raw Raw2 arg) @Raw { //:: (dereference.of.nullable) arg.field.hashCode(); // I presume that this gives no warning because of the checkers' // built-in heuristic that any given warning should be issued just // once. However, since the field is being looked up on a different // object ("this" vs. "arg", it should arguably be output regardless of // the heuristic. // TODO: //:: (dereference.of.nullable) this.field.hashCode(); } public static void test() { new Raw2(); } }