package a class MyList(t: T) {} fun getMyList(t: T) : MyList< T> = MyList(t) fun getMyListToWriteTo(t: T) : MyList< in T> = MyList(t) fun getMyListToReadFrom(t: T) : MyList = MyList(t) fun useMyList (l: MyList< T>, t: T) {} fun writeToMyList (l: MyList< in T>, t: T) {} fun readFromMyList(l: MyList, t: T) {} fun test1(int: Int, any: Any) { val a0 : MyList = getMyList(int) val a1 : MyList = getMyList(any) val a2 : MyList = getMyList(int) val a3 : MyList = getMyListToReadFrom(int) val a4 : MyList = getMyList(any) val a5 : MyList = getMyListToWriteTo(any) val a6 : MyList = getMyList(int) val a7 : MyList = getMyList(int) val a8 : MyList = getMyListToReadFrom(int) val a9 : MyList = getMyListToReadFrom(int) val a10 : MyList = getMyList(any) val a11 : MyList = getMyList(any) val a12 : MyList = getMyListToWriteTo(any) val a13 : MyList = getMyListToWriteTo(any) useMyList(getMyList(int), int) useMyList(getMyList(any), int) useMyList(getMyList(int), any) readFromMyList(getMyList(int), any) readFromMyList(getMyList(any), int) readFromMyList(getMyList(any), int) readFromMyList(getMyListToReadFrom(any), int) readFromMyList(getMyListToReadFrom(any), int) readFromMyList(getMyListToReadFrom(int), any) writeToMyList(getMyList(any), int) writeToMyList(getMyList(int), any) writeToMyList(getMyList(int), any) writeToMyList(getMyList(int), any) writeToMyList(getMyListToWriteTo(any), int) writeToMyList(getMyListToWriteTo(int), any) readFromMyList(getMyListToWriteTo(any), any) writeToMyList(getMyListToReadFrom(any), any) use(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) } fun use(vararg a: Any) = a