Свойство Kotlin: «Тип параметра свойства должен использоваться в типе приемника»

У меня есть следующие простые функции расширения Котлина:

// Get the views of ViewGroup inline val ViewGroup.views: List<View> get() = (0..childCount - 1).map { getChildAt(it) } // Get the views of ViewGroup of given type inline fun <reified T : View> ViewGroup.getViewsOfType() : List<T> { return this.views.filterIsInstance<T>() } 

Этот код компилируется и работает отлично. Но я хочу, чтобы функция getViewsOfType была свойством, как и views . Android Studio даже предлагает это. Я разрешаю AS делать рефакторинг и генерирует этот код:

 inline val <reified T : View> ViewGroup.viewsOfType: List<T> get() = this.views.filterIsInstance<T>() 

Но этот код не компилируется. Это вызывает ошибку: «Тип параметра свойства должен использоваться в его типе приемника»

В чем проблема? Поиск справки об этой ошибке, похоже, не приводит к ответу.

Ошибка означает, что вы можете иметь только общий тип типа для свойства расширения, если вы используете указанный тип в типе приемника – тип, который вы расширяете.

Например, у вас может быть расширение, которое расширяет T :

 val <T: View> T.propName: Unit get() = Unit 

Или тот, который расширяет тип, который использует T как параметр:

 val <T: View> List<T>.propName: Unit get() = Unit 

Что касается этого, я думаю, причина в том, что свойство не может иметь общий тип параметров, например, функцию. Хотя мы можем вызвать функцию с типичным параметром типа …

 val buttons = viewGroup.getViewsOfType<Button>() 

… Я не считаю, что для свойств существует аналогичный синтаксис:

 val buttons = viewGroup.viewsOfType<Button> // ??