import java.util.Collection; @interface Anno { Anno[] nested() default {}; } abstract class C { abstract void f(); void wrong() { @Anno f(); } @Anno(nested = {@Anno, @Anno}) void notWrong() { } } class B extends @Deprecated Object { } enum E { @Anno E1 } interface I { @Anno public @Anno Collection<@Anno String> method(@Anno @Anno Object o); } @interface Caller { Anno anno() default @Anno; } @interface AnnoArray { @interface Part { } Part[] arrayValue() default {@Part, @Part}; }