fun foo(t: T, l: List) {} fun use(vararg a: Any?) = a fun test(a: Any, ls: List) { use(foo(11, ls)) } Resolved call: Candidate descriptor: fun foo(t: T, l: List): Unit defined in root package Resulting descriptor: fun foo(t: {Comparable<*> & java.io.Serializable}, l: List<{Comparable<*> & java.io.Serializable}>): Unit defined in root package Explicit receiver kind = NO_EXPLICIT_RECEIVER Dispatch receiver = NO_RECEIVER Extension receiver = NO_RECEIVER Value arguments mapping: SUCCESS t : {Comparable<*> & java.io.Serializable} = 11 SUCCESS l : List<{Comparable<*> & java.io.Serializable}> = ls