Generics: fixed return different subclass from a method defined on the base class.