import kotlin.reflect.KProperty class X1 { operator fun getValue(thisRef: C, property: KProperty<*>): String = "" operator fun setValue(thisRef: C, property: KProperty<*>, value: String) {} } class X2 { operator fun getValue(thisRef: C, property: KProperty<*>): String = "" } class X3 { operator fun getValue(thisRef: C, property: KProperty<*>): String = "" operator fun setValue(thisRef: String, property: KProperty<*>, value: String) {} } class X4 { operator fun getValue(thisRef: C, property: KProperty<*>): String = "" operator fun setValue(thisRef: C, property: KProperty<*>, value: CharSequence) {} } class X5 { operator fun getValue(thisRef: C, property: KProperty<*>): CharSequence = "" operator fun setValue(thisRef: C, property: KProperty<*>, value: String) {} } class Y1 class Y2 operator fun Y1.getValue(thisRef: C, property: KProperty<*>): String = "" operator fun Y1.setValue(thisRef: C, property: KProperty<*>, value: String) {} operator fun Y2.getValue(thisRef: C, property: KProperty<*>): String = "" fun createX1() = X1() fun createX2() = X2() fun createX3() = X3() fun createX4() = X4() fun createX5() = X5() class C { var property by } // ABSENT: lazy // EXIST: { itemText: "Delegates.notNull", tailText:"() (kotlin.properties)", typeText: "ReadWriteProperty", attributes:"" } // EXIST: { itemText: "Delegates.observable", tailText:"(initialValue: T, crossinline onChange: (KProperty<*>, T, T) -> Unit) (kotlin.properties)", typeText: "ReadWriteProperty", attributes:"" } // EXIST: { itemText: "Delegates.vetoable", tailText:"(initialValue: T, crossinline onChange: (KProperty<*>, T, T) -> Boolean) (kotlin.properties)", typeText: "ReadWriteProperty", attributes:"" } // EXIST: createX1 // ABSENT: createX2 // ABSENT: createX3 // EXIST: createX4 // ABSENT: createX5 // EXIST: X1 // ABSENT: X2 // ABSENT: X3 // EXIST: X4 // ABSENT: X5 // EXIST: Y1 // ABSENT: Y2