@Override
  @NotNull
  public V cacheOrGet(final int key, @NotNull final V defaultValue) {
    V v = get(key);
    if (v != null) return v;
    V prev = putIfAbsent(key, defaultValue);
    return prev == null ? defaultValue : prev;
  }
@Override
  @NotNull
  public V cacheOrGet(final int key, @NotNull final V defaultValue)