// FULL_JDK // WITH_RUNTIME // LANGUAGE_VERSION: 1.1 import java.util.stream.* class B : List { override val size: Int get() = throw UnsupportedOperationException() override fun contains(element: F): Boolean { throw UnsupportedOperationException() } override fun containsAll(elements: Collection): Boolean { throw UnsupportedOperationException() } override fun get(index: Int): F { throw UnsupportedOperationException() } override fun indexOf(element: F): Int { throw UnsupportedOperationException() } override fun isEmpty(): Boolean { throw UnsupportedOperationException() } override fun iterator(): Iterator { throw UnsupportedOperationException() } override fun lastIndexOf(element: F): Int { throw UnsupportedOperationException() } override fun listIterator(): ListIterator { throw UnsupportedOperationException() } override fun listIterator(index: Int): ListIterator { throw UnsupportedOperationException() } override fun subList(fromIndex: Int, toIndex: Int): List { throw UnsupportedOperationException() } override fun stream() = Stream.of("abc", "ab") as Stream } fun box(): String { val a: List = listOf("abc", "a", "ab") val b = a.stream().filter { it.length > 1 }.collect(Collectors.toList()) if (b != listOf("abc", "ab")) return "fail 1" val c = B().stream().collect(Collectors.toList()) if (c != listOf("abc", "ab")) return "fail 2" return "OK" }