public class Code { public static void main(String[]argv) { } public void foo(UID x) { bar((x instanceof UID ? E.one : E.two)); } public static void bar(FM fm) { } } aspect X { void around(): execution(* foo(..)) { } } class E { static BBB one; static CCC two; class BBB extends FM<String> {} class CCC extends FM<Long> {} } class FM<T> {} class UID {}