This can be written so that it only hashes once if the key is present and the value is non-null:

```
V putIfAbsent(K key, V ifAbsent()) {
  var value = _map[key];
  if (value != null) return value;
  if (!_map.containsKey(key)) return _add(key, ifAbsent(), false);
  return null;
}
```