Defensive copying of some sort, then. Mutable internal, immutable external probably works best. If you want to guarantee to the component that the view they hold will not change beneath them (i.e. it represents a snapshot in time of the mutable collection), you'll need a full copy. Otherwise, you can use the view, as seen in
https://kotlinlang.org/docs/reference/collections.html