var log = "" class A(p: String) { var pp = p init { log += "init($p);" } } operator fun A.plusAssign(s: String) { pp += s log += "pp = $pp;" } class D { val a = A("D") } object E { val t = A("E") } fun box(): String { log = "" val d = D() d.a += "foo" if (log != "init(D);pp = Dfoo;") return "1: log = \"$log\"" log = "" E.t += "ET" if (log != "init(E);pp = EET;") return "2: log = \"$log\"" log = "" val c = object { val b = object { val a = A("xcv") } } c.b.a += "eee" if (log != "init(xcv);pp = xcveee;") return "3: log = \"$log\"" val b = object { val a = A("qwe") } b.a.pp += "ui" if (b.a.pp != "qweui") return "4: b.a.pp = \"${b.a.pp}\"" return "OK" }