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: T1, y: T2): super(x, y) {} } Resolved call: Candidate descriptor: constructor B(x: X, y: Y) defined in B Resulting descriptor: constructor B(x: T1, y: T2) 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 y : T2 = y