// LANGUAGE: +InlineClasses

// FILE: utils.kt

inline class UInt(private val value: Int) {
    fun asInt() = value
}

inline class UIntArray(private val intArray: IntArray) {
    operator fun get(index: Int): UInt = UInt(intArray[index])

    operator fun set(index: Int, value: UInt) {
        intArray[index] = value.asInt()
    }
}

// FILE: test.kt

fun UIntArray.swap(i: Int, j: Int) {
    this[j] = this[i].also { this[i] = this[j] }
}

// @TestKt.class:
// 0 INVOKEVIRTUAL UInt.unbox
// 0 INVOKESTATIC UInt\$Erased.box
// 0 INVOKESTATIC UInt\.box
// 0 intValue
// 0 valueOf