// !CHECK_TYPE import kotlin.reflect.KProperty1 interface Base { val x: Any } class A : Base { override val x: String = "" } open class B : Base { override val x: Number = 1.0 } class C : B() { override val x: Int = 42 } fun test() { val base = Base::x checkSubtype>(base) checkSubtype(base.get(A())) checkSubtype(base.get(B())) checkSubtype(base.get(C())) val a = A::x checkSubtype>(a) checkSubtype(a.get(A())) checkSubtype(a.get(B())) val b = B::x checkSubtype>(b) checkSubtype(b.get(C())) }