var log = "" fun logged(value: String) = value.also { log += value } object A { var x = "" var gets = "" var sets = "" operator fun get(vararg va: String): String { for (s in va) { gets += s } log += "get;" return x } operator fun set(vararg va: String, value: String) { for (s in va) { sets += s } log += "set;" x = value } } operator fun String.inc() = this + logged("inc;") fun box(): String { A.x = "start;" val xx = A[logged("1;"), logged("2;"), logged("3;")]++ if (xx != "start;") return "Failed xx: $xx" if (A.x != "start;inc;") return "Failed A.x: ${A.x}" if (A.gets != "1;2;3;") return "Failed A.gets: ${A.gets}" if (A.sets != "1;2;3;") return "Failed A.sets: ${A.sets}" if (log != "1;2;3;get;inc;set;") return "Failed log: $log" return "OK" }