class B class C class A() { constructor(a: Int) : this("test") {} constructor(a: String) : this(10) {} constructor(a: Boolean) : this('\n') {} constructor(a: Char) : this(0.0) {} constructor(a: Double) : this(false) {} constructor(b: B) : this(3.14159265) {} constructor(c: C) : this() {} constructor(a: List) : this(C()) {} } class D { constructor(i: Boolean) {} constructor(i: Int) : this(3) {} } class E { // this is not an error about the // selection of the proper constructor // but a type mismatch for the first // argument constructor(e: T, i: Int) : this(i, 10) {} } class I { // this is not an error about the // selection of the proper constructor // but a type mismatch for the first // argument constructor(e: T, i: Int) : this(i, 10) } class J { constructor(e: T, i: Int) : this(i, 10) constructor(e: Int, i: Int) } class F(s: String) { constructor(i: Boolean) {} constructor(i: Int) : this(3) {} } class G(x: Int) { constructor() {} } class H(x: Int) { constructor() } class K(x: Int) { constructor() : this() {} } open class M { constructor(m: Int) } class U : M { constructor() }