Критики Котлина и неправильный вывод

Рассмотрим общий class Item и определенный class Event который наследует его:

 open class Item<T> { fun copyFrom(item: T) { if (this is Event && item is Event) { owner = item.owner value = item.value } } } class Event : Item<Event> { open var owner = "" open var value = 0 } 

Благодаря выводу типа нам не нужно бросать элемент в событие, и мы можем напрямую обращаться к owner и его value . Однако он говорит, что item имеет тип T и не может быть передан Event в item is Event . Я считаю, что этого не должно произойти, поскольку это предложение верное в Java?

РЕДАКТИРОВАТЬ:

Мне известно о том, что реализация copyFrom должна выполняться в Event , но это просто для демонстрации проблемы вывода типа.

Даже когда вы разбираете синтаксические проблемы: не делайте этого.

Вы создаете универсальный контейнер, который явно проверяет, входит ли отдельный подкласс . Затем сделайте поля подпуска и доступа в подклассе.

Это похоже на абсолютную противоположность хорошего дизайна OO. Вы базовый класс не должны ничего знать о каком-либо подклассе!