var log = "" class A(p: String) { var pp = p init { log += "init($p);" } } operator fun A.plusAssign(s: String) { pp += s log += "pp = $pp;" } inline fun T.foo(f: (T) -> R) = f(this) fun T.bar(f: (T) -> R) = f(this) fun box(): String { "rrr".foo { A(it) } += "aaa" if (log != "init(rrr);pp = rrraaa;") return "1: log = \"$log\"" log = "" "foo".bar { A(it) } += "baaar" if (log != "init(foo);pp = foobaaar;") return "2: log = \"$log\"" return "OK" }