upsert method

void upsert(
  1. K key,
  2. V insert(),
  3. V update(
    1. V existing
    )
)

If key absent: thiskey = insert(); else thiskey = update(thiskey).

Implementation

void upsert(K key, V Function() insert, V Function(V existing) update) {
  if (!containsKey(key)) {
    this[key] = insert();
  } else {
    final v = this[key];
    if (v is V) this[key] = update(v);
  }
}