import checkers.javari.quals.*; class Extensions { class BaseClass { String mutableReceiver() {return null;} String readonlyReceiver() @ReadOnly {return null;} @Mutable String mutableReturn() {return null;} @PolyRead String polyReadReturn() @PolyRead {return null;} @ReadOnly String readonlyReturn() {return null;} } @ReadOnly class ReadOnlyEmpty {} @ReadOnly class ReadOnlyExtension extends BaseClass {} @Mutable class MutableExtension extends BaseClass {} //:: (polyread.type) @PolyRead class PolyReadIllegalExtension extends BaseClass {} class SwitchReceivers extends BaseClass { String mutableReceiver() @ReadOnly {return null;} //:: (override.receiver.invalid) String readonlyReceiver() @Mutable {return null;} // error } class SwitchReturns extends BaseClass { //:: (override.return.invalid) @ReadOnly String mutableReturn() {return null;} // error @Mutable String readonlyReturn() {return null;} } class PolyReadReturns extends BaseClass { //:: (override.return.invalid) @PolyRead String mutableReturn() {return null;} // error @PolyRead String readonlyReturn() {return null;} } class ForcePolyReadReturnToMutable extends BaseClass { @Mutable String polyReadReturn() @ReadOnly {return null;} } class ForcePolyReadReturnToReadOnly extends BaseClass { //:: (override.return.invalid) @ReadOnly String polyReadReturn() @ReadOnly {return null;} } class PolyReadReceivers extends BaseClass { String mutableReceiver() @PolyRead {return null;} //:: (override.receiver.invalid) String readonlyReceiver() @PolyRead {return null;} // error } }