open class B { constructor(x: X, y: Y) {} constructor(x: X, s: String) {} constructor(y: Y, i: Int) : this(y, "") {} } class A : B { constructor(x: T2): super(x, "") {} } Resolved call: Candidate descriptor: constructor B(x: X, s: String) defined in B Resulting descriptor: constructor B(x: T1, s: String) defined in B Explicit receiver kind = NO_EXPLICIT_RECEIVER Dispatch receiver = NO_RECEIVER Extension receiver = NO_RECEIVER Value arguments mapping: SUCCESS x : T1 = x SUCCESS s : String = ""