Retains only the elements in this collection that are contained in the specified collection.
Allows to overcome type-safety restriction of
retainAll that requires to pass a collection of type
true if any element was removed from the collection,
false if the collection was not modified.
fun <T> MutableCollection<in T>.retainAll(
elements: Array<out T>
fun <T> MutableIterable<T>.retainAll(
predicate: (T) -> Boolean