// !DUMP_CFG import kotlin.properties.ReadWriteProperty import kotlin.reflect.KProperty abstract class DelegateProvider fun , Target : Any> Type.delegate( factory: () -> ReadWriteProperty ): ReadWriteProperty = null!! class IssueListView : DelegateProvider() { fun updateFrom(any: Any) {} } class IssuesListUserProfile : DelegateProvider() { var issueListView by delegate { object : ReadWriteProperty { override fun getValue(thisRef: IssuesListUserProfile, property: KProperty<*>): IssueListView { return IssueListView() } override fun setValue(thisRef: IssuesListUserProfile, property: KProperty<*>, value: IssueListView) { return IssueListView().updateFrom(value) } } } }