import kotlin.reflect.KProperty interface In interface Out interface Inv class Delegate { operator fun getValue(t: Any, p: KProperty<*>): T = null!! operator fun setValue(t: Any, p: KProperty<*>, varue: T) {} } fun getT(): T = null!! abstract class Test { abstract var type1: I abstract var type2: O abstract var type3: P abstract var type4: In<")!>I> abstract var type5: In<")!>O> var implicitType1 = getT() var implicitType2 = getT() var implicitType3 = getT

() ")!>var implicitType4 = getT>() ")!>var implicitType5 = getT>() var delegateType1 by Delegate() var delegateType2 by Delegate() var delegateType3 by Delegate

() ")!>var delegateType4 by Delegate>() ")!>var delegateType5 by Delegate>() abstract var I.receiver1: Int abstract var O.receiver2: Int abstract var P.receiver3: Int abstract var In<")!>I>.receiver4: Int abstract var In.receiver5: Int var X.typeParameter1: Int get() = 0; set(i) {} var O> X.typeParameter2: Int get() = 0; set(i) {} var X.typeParameter3: Int get() = 0; set(i) {} var ")!>I>> X.typeParameter4: Int get() = 0; set(i) {} var > X.typeParameter5: Int get() = 0; set(i) {} var X.typeParameter6: Int where X : I get() = 0; set(i) {} var X.typeParameter7: Int where X : O get() = 0; set(i) {} var X.typeParameter8: Int where X : P get() = 0; set(i) {} var X.typeParameter9: Int where X : In<")!>I> get() = 0; set(i) {} var X.typeParameter0: Int where X : In get() = 0; set(i) {} }