¿Cuál es la forma más elegante de eliminar un oyente de una list de una callback?

Supongamos que tengo el siguiente oyente

interface MyListener { fun onResult(result: Int) } 

y que mi class tiene una list de este oyente

 val MyListenerList = ArrayList<MyListener>() 

Mi duda es: si alguien que registró el oyente quiere anular el logging (eliminarlo de la list) cuando se onResult la callback ( onResult ), ¿cuál es la forma más elegante de hacerlo, teniendo en count que lo llama directamente mientras la list la iteración se está ejecutando causará una ConcurrentModificationException ?

    No itere sobre MyListenerList , haga una copy de MyListenerList e itere sobre la copy. De esta forma, la eliminación puede ocurrir en MyListenerList sin causar una ConcurrentModificationException .

    Por ejemplo:

     ArrayList(MyListenerList).forEach { it.onRemove(n) } 

    o

     MyListenerList.toArray().forEach { it.onRemove(n) }