class U { void bar(A a) { a.foo(2) } void bar(B b) { b.foo(2) } void bar(C c) { c.foo(2) } void bar(D d) { d.foo(2) } void bar(Z z) { z.foo(2) } }