import java.util.*; interface Base { } class Derived implements Base { } class X { void method(int i, Base b) { } void method(int i, Derived b) { } { Derived d = new Derived(); method(10, d); } } class Temp {} class A { public > A(T list) {} public > A(T list) {} } class B { public B(T list) {} public > B(T list) {} } ////////////////////////////////////////// class IdeaBug { static T cloneMe(T arg) throws CloneNotSupportedException { return (T) arg.clone(); } }