trait In trait Out trait Inv class Delegate { fun get(t: Any, p: PropertyMetadata): T = null!! fun set(t: Any, p: PropertyMetadata, 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 typeParameter1 = 8 var O> typeParameter2 = 13 var typeParameter3 = 21 var )!>I>> typeParameter4 = 34 var > typeParameter5 = 55 var typeParameter6 where X : I = 1 var typeParameter7 where X : O = 1 var typeParameter8 where X : P = 2 var typeParameter9 where X : In<)!>I> = 3 var typeParameter0 where X : In = 5 }