package org.openrs2.util.collect public fun MutableIterable.removeFirst(): T { return removeFirstOrNull() ?: throw NoSuchElementException() } public fun MutableIterable.removeFirstOrNull(): T? { val iterator = iterator() if (!iterator.hasNext()) { return null } val element = iterator.next() iterator.remove() return element } public inline fun MutableIterable.removeFirst(predicate: (T) -> Boolean): Boolean { val iterator = iterator() for (element in iterator) { if (predicate(element)) { iterator.remove() return true } } return false }