class List { T t;} class Base { List getList(List l) { return null; } } class Derived extends Base { List getList(List l) { return null; } } class A1 { T foo(T t) { return null; } } class A2 extends A1 { Object foo(Object o) { return null; } } //IDEADEV-15918 abstract class Outer { public abstract Inner m(U u); public class Inner { } } class Other extends Outer { public Ither m(Other other) { return new Ither(); } public class Ither extends Inner { } } //end of IDEADEV-15918