class A { . . . }
class B extends A { . . . }
class C extends B { . . . }
class D { int h(A x) { return 1; } }
class E extends D { int h(C x) { return 2; } }
class F extends E { int h(A x) { return 3; } }
class G extends F { int h(B x) { return 4; }
int h(C x) { return 5; } }
class H {
main(. . .) {
B b = new C();
E e = new G();
. . . e.h(b) . . .