package foo // CHECK_NOT_CALLED: moveTo native fun Array.push(element: Int): Unit = noImpl native fun Array.splice(index: Int, howMany: Int): Unit = noImpl data class PairArray(val fst: Array, val snd: Array) inline fun moveTo(source: Array, sink: Array): PairArray { val size = source.size for (i in 1..size) { val element = source[0] source.splice(0, 1) sink.push(element) } return PairArray(source, sink) } fun box(): String { val expected = PairArray(array(), array(1,2,3,4)) assertEquals(expected, moveTo(array(3, 4), array(1, 2))) return "OK" }