data class Result { constructor(i: Int) /* primary */ { super/*Any*/() /* () */ } var i: Int field = i get set operator fun component1(): Int { return .#i } fun copy(i: Int = .#i): Result { return Result(i = i) } override fun toString(): String { return "Result(" + "i=" + .#i + ")" } override fun hashCode(): Int { return .#i.hashCode() } override operator fun equals(other: Any?): Boolean { when { EQEQEQ(arg0 = , arg1 = other) -> return true } when { other !is Result -> return false } val tmp0_other_with_cast: Result = other as Result when { EQEQ(arg0 = .#i, arg1 = tmp0_other_with_cast.#i).not() -> return false } return true } } var operationScore: Int field = 0 get set operator fun Result.plus(: Int, other: Result): Result { { // BLOCK ( = ().plus(other = )) } return Result(i = .().plus(other = other.())) } operator fun Result.plusAssign(: Int, other: Result) { { // BLOCK ( = ().plus(other = )) } { // BLOCK val tmp0_this: Result = tmp0_this.( = tmp0_this.().plus(other = other.())) } } operator fun Result.minus(: Int, other: Result): Result { { // BLOCK ( = ().plus(other = )) } return Result(i = .().minus(other = other.())) } operator fun Result.minusAssign(: Int, other: Result) { { // BLOCK ( = ().plus(other = )) } { // BLOCK val tmp0_this: Result = tmp0_this.( = tmp0_this.().minus(other = other.())) } } operator fun Result.times(: Int, other: Result): Result { { // BLOCK ( = ().plus(other = )) } return Result(i = .().times(other = other.())) } operator fun Result.timesAssign(: Int, other: Result) { { // BLOCK ( = ().plus(other = )) } { // BLOCK val tmp0_this: Result = tmp0_this.( = tmp0_this.().times(other = other.())) } } operator fun Result.div(: Int, other: Result): Result { { // BLOCK ( = ().plus(other = )) } return Result(i = .().div(other = other.())) } operator fun Result.divAssign(: Int, other: Result) { { // BLOCK ( = ().plus(other = )) } { // BLOCK val tmp0_this: Result = tmp0_this.( = tmp0_this.().div(other = other.())) } } fun box(): String { val result: Result = Result(i = 0) with(receiver = 1, block = local fun Int.() { result.plusAssign( = $this$with, other = Result(i = 1).plus( = $this$with, other = Result(i = 1))) result.minusAssign( = $this$with, other = Result(i = 1).minus( = $this$with, other = Result(i = 0))) result.timesAssign( = $this$with, other = Result(i = 1).times( = $this$with, other = Result(i = 2))) result.divAssign( = $this$with, other = Result(i = 4).div( = $this$with, other = Result(i = 2))) } ) return when { when { EQEQ(arg0 = result.(), arg1 = 1) -> EQEQ(arg0 = (), arg1 = 8) else -> false } -> "OK" else -> "fail" } }