pointcut X1(S s1) : this(s1); pointcut X2(S s2, T t2) : (call(void crossing_x(..)) && this(s2) && target(t2) ); pointcut X3(A a1, B b2, C c3) : cflow( * visiting_A1(a1)); pointcut Y4(Source s): ! cflow(this(s)); before(S s1) : this(s1) { }; after(S s2, T t2) : (call(void crossing_x(..)) && this(s2) && target(t2) ) { } ;