OK. Can we agree that it's basically defensive programming against bad programming practices? I see why using a Collections.unmodifiableList() in Java is important, and I often use it, because there is no hint, other than the documentation, that a returned Java List is not supposed to be modified. But that's not the case with Kotlin. If I wanted to the collection to be mutable, I would return a MutableList, not a List. To me, returning a List is a clear sign that the list shouldn't be modified, and using a cast goes against the design and could lead to bad things (just as bad as using reflection to access and mutate the mutable list wrapped by the unmodifiable list). But yes, when working with newbies, adding an additional layer of security can be useful.