On my current project we use readonly lists and defensive copies in a number of places despite the performance cost, because it makes the behavior of both the callers and the callees more predictable, and protects them from the collections being unexpectedly modified. My understanding is that Clojure has immutable data structures that do significantly better performance-wise when the data is copied, with a minor overhead when looking up indices, so something like that would be what I would like to see from Kotlin’s immutable collections.