import checkers.igj.quals.*; @I class ThisReferenceImmutableSuper { // Receiving methods public static void isRO(@ReadOnly ThisReferenceImmutableSuper obj) { } public static void isMutable(@Mutable ThisReferenceImmutableSuper obj) { } public static void isImmutable(@Immutable ThisReferenceImmutableSuper obj) { } } @Immutable class ImmutableThisTest extends ThisReferenceImmutableSuper { public void testRO() @ReadOnly { isRO(this); isMutable(this); // should emit error isImmutable(this); } public void testAssignsFields () @AssignsFields { isRO(this); isMutable(this); // should emit error isImmutable(this); } public void testImmutable() @Immutable { isRO(this); isMutable(this); // should emit error isImmutable(this); } }