@Documented @Retention(value=RUNTIME) @Target(value=METHOD) public @interface ReportCall
For example, assume three classes A, B, and C, that each implement/override a method m and A <: B <: C. Assume that B.m is annotated as ReportCall. Calls of A.m and B.m will then be reported, but calls of C.m will not be reported, even though the C reference might point to a B object. Therefore, add the ReportCall annotation high enough in the subtype hierarchy.