// TARGET_BACKEND: JVM // WITH_RUNTIME import java.util.Arrays class MyCollection(val delegate: Collection): Collection by delegate { public fun toArray(): Array { val a = arrayOfNulls(3) a[0] = 0 a[1] = 1 a[2] = 2 return a } public fun toArray(array: Array): Array { val asIntArray = array as Array asIntArray[0] = 0 asIntArray[1] = 1 asIntArray[2] = 2 return array } } fun box(): String { val collection = MyCollection(Arrays.asList(2, 3, 9)) as java.util.Collection<*> val array1 = collection.toArray() val array2 = collection.toArray(arrayOfNulls(3) as Array) if (!array1.isArrayOf()) return (array1 as Object).getClass().toString() if (!array2.isArrayOf()) return (array2 as Object).getClass().toString() val s1 = Arrays.toString(array1) val s2 = Arrays.toString(array2) if (s1 != "[0, 1, 2]") return "s1 = $s1" if (s2 != "[0, 1, 2]") return "s2 = $s2" return "OK" }