@OnMember @Retention package pkg1; @interface Name { String first() default "Joe"; String last() default "Smith"; int age(); } @interface Author { Name value(); } @interface Retention { } @interface OnMember {} @interface OnParameter { String value(); } @interface OnLocalVariable {} @OnMember @Retention @Author(@Name(first="Jdt", last="Core", age=32)) public class X { @OnMember @Retention private String aString; @OnMember @Author(@Name(first="John", last="Doe", age=32)) X() { } @OnMember public void bar(@OnParameter("unused value") final int i, @OnParameter("unused value") String s) { @OnLocalVariable @Retention String localString = "string"; } }