internal class Outer { private inner class Inner1() { constructor(a: Int) : this() { } protected constructor(c: Char) : this() { } private constructor(b: Boolean) : this() { } } protected inner class Inner2() { constructor(a: Int) : this() { } protected constructor(c: Char) : this() { } private constructor(b: Boolean) : this() { } } internal inner class Inner3() { constructor(a: Int) : this() { } protected constructor(c: Char) : this() { } private constructor(b: Boolean) : this() { } } inner class Inner4() { constructor(a: Int) : this() { } protected constructor(c: Char) : this() { } private constructor(b: Boolean) : this() { } } fun foo() { val inner1 = Inner1(1) val inner2 = Inner2(2) val inner3 = Inner3(3) val inner4 = Inner4(4) } }