import org.aspectj.testing.Tester;

public class Tricky3 {
    public static void main(String[] args) {
	C c = new SubC();
    }
}

class C {
}

class SubC extends C {
    void m() { }
}

aspect A1 pertarget(target(SubC)) {
    after() returning (SubC sub): call(new(..)) {
	System.out.println("new " + sub);
    }
}

aspect A2 pertarget(call(void SubC.*())) {
    after() returning (SubC sub): call(new(..)) {
	System.out.println("new " + sub);
    }
}

aspect A3 pertarget(call(void m())) {
    after() returning (SubC sub): call(new(..)) {
	System.out.println("new " + sub);
    }
}