@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"; } }