karelpeeters
03/06/2018, 1:38 PMinterface CertainMutableMap<K, V> : MutableMap<K, V> {
override fun get(key: K): V
}
fun <K, V : Any> MutableMap<K, V>.certainWithDefault(defaultValue: (key: K) -> V): CertainMutableMap<K, V>
= object : CertainMutableMap<K, V>, MutableMap<K, V> by this {
override fun get(key: K): V = this@certainWithDefault.getOrElse(key) { defaultValue(key) }
}