public class BadAround {

}

class C {
    public String m(String s) { return "hi"; }
    public int mi() { return 2; }
}

aspect A {
    Object around(): call(String C.m(..)) {
        return new Integer(2);
    }
    Object around(Object a): call(String C.m(..)) && args(a) {
        return proceed(new Integer(2));
    }

    Object around(): call(int C.mi()) {
        return "2";
    }

    int around(): call(String C.m(..)) { // ERR, return type mismatch
        return 2;
    }
}