Exposing a Mutable member as Immutable

Sorry for reviving this old post, but what about something like:

private val _theThing = mutableListOf<String>()
val theThing = object : List<String> by _theThing {}

The verbosity is not as minimal as other solutions proposed but still very good. More importantly, you cannot cast the property theThing to a modifiable list, since the modifiable list is not the object itself but encapsulated inside instead.