class B{}
class C{}
class D extends B{}
class A {
    static int a(D d, B b) { return 1; }
    static int a(C c1, C c2) { return 2; }
    static int a(B b1, B b2) { return 3; }
    static int a(A a1, A a2) { return 4; }
    public static void main(String[] args) {
        System.out.println(a(new D(), new D()));
    }
}
Nesse caso qual seria a saída?
 
            