Lista inmutable de instancia de Kotlin

Empecé a usar Kotlin como un sustituto de Java y me gusta bastante. Sin embargo, no he podido encontrar una solución a esto sin volver a java-land:

Yo tengo unIterable<SomeObject> y necesito convertirlo en una lista para que pueda recorrerlo más de una vez. Esta es una aplicación obvia de una lista inmutable, ya que todo lo que necesito hacer es leerla varias veces. Sin embargo, ¿cómo pongo esos datos en la lista al principio? (Sé que es una interfaz, pero no pude encontrar una implementación en la documentación)

Posibles soluciones (si no son satisfactorias):

val valueList = arrayListOf(values)
// iterate through valuelist

o

fun copyIterableToList(values: Iterable<SomeObject>) : List<SomeObject> {
    var outList = ArrayList<SomeObject>()
    for (value in values) {
        outList.add(value)
    }
    return outList
}

A menos que esté malentendido, estos terminan conMutableLists, que funciona pero parece una solución alternativa. ¿Hay un similarimmutableListOf(Iterable<SomeObject>) método que instanciará un objeto de lista inmutable?

Respuestas a la pregunta(1)

Su respuesta a la pregunta