import kotlin.test.* import kotlin.comparisons.* fun box() { class TestCollection(val data: Collection) : AbstractCollection() { override val size get() = data.size override fun iterator() = data.iterator() public override fun toArray(): Array = super.toArray() public override fun toArray(array: Array): Array = super.toArray(array) } val data = listOf(1, 2, 3) assertEquals(TestCollection(data).toArray().asList(), data) assertEquals(TestCollection(listOf()).toArray().size, 0) var arr1 = Array(3) { -1 } var arr2 = TestCollection(data).toArray(arr1) assertTrue(arr1 === arr2) assertEquals(arr2.asList(), data) arr1 = Array(4) { -1 } arr2 = TestCollection(data).toArray(arr1) assertTrue(arr1 === arr2) assertEquals(arr2.asList(), data + listOf(-1)) arr1 = Array(2) { -1 } arr2 = TestCollection(data).toArray(arr1) assertFalse(arr1 === arr2) assertEquals(arr2.asList(), data) }