data class Pair { val first: A field = first get val second: B field = second get constructor(first: A, second: B) /* primary */ { super/*Any*/() /* () */ } operator fun component1(): A { return .#first } operator fun component2(): B { return .#second } fun copy(first: A = .#first, second: B = .#second): Pair { return Pair(first = first, second = second) } override operator fun equals(other: Any?): Boolean { when { EQEQEQ(arg0 = , arg1 = other) -> return true } when { other !is Pair -> return false } val tmp_0: Pair = other as Pair when { EQEQ(arg0 = .#first, arg1 = tmp_0.#first).not() -> return false } when { EQEQ(arg0 = .#second, arg1 = tmp_0.#second).not() -> return false } return true } override fun hashCode(): Int { var result: Int = when { EQEQ(arg0 = .#first, arg1 = null) -> 0 else -> .#first.hashCode() } result = result.times(other = 31).plus(other = when { EQEQ(arg0 = .#second, arg1 = null) -> 0 else -> .#second.hashCode() }) return result } override fun toString(): String { return "Pair(" + "first=" + .#first + ", " + "second=" + .#second + ")" } } fun box(): String { val comparator: Comparator = local fun (a: @FlexibleNullability String?, b: @FlexibleNullability String?): Int { return when { when { EQEQ(arg0 = a, arg1 = null) -> true else -> EQEQ(arg0 = b, arg1 = null) } -> 0 else -> a /*!! String */.().compareTo(other = b /*!! String */.()) } } /*-> Comparator */ return with, String>(receiver = comparator, block = local fun Comparator.(): String { return Pair(first = "OK", second = "fail").($context_receiver_0 = $this$with) } ) } infix operator fun T.compareTo($context_receiver_0: Comparator, other: T): Int { return $context_receiver_0.compare(p0 = , p1 = other) } val Pair.min: T get($context_receiver_0: Comparator): T { return when { less(arg0 = .().compareTo($context_receiver_0 = $context_receiver_0, other = .()), arg1 = 0) -> .() else -> .() } }