import checkers.util.test.*; import java.util.*; public abstract class MethodOverrides { public abstract @Odd String method(); public abstract String methodSub(); public abstract void param(@Odd String s); public abstract void paramSup(@Odd String s); public abstract void receiver() @Odd; public abstract void receiverSub() @Odd; public static class SubclassA extends MethodOverrides { public @Odd String method() { return (@Odd String)""; } public @Odd String methodSub() { return (@Odd String)""; } public void param(@Odd String s) {} public void paramSup(String s) {} public void receiver() @Odd {} public void receiverSub() {} } static class X { <T> T @Odd [] method(T @Odd [] t) { return null; } } static class Y extends X { @Override <T> T @Odd [] method(T @Odd [] t) { return null; } } // TODO others... }