@Override
  public @NotNull V get(K key) {
    V value = getIfCached(key);
    if (value != null) {
      return value;
    }

    value = createValue(key);
    put(key, value);

    return value;
  }
@Override
  public @NotNull V get(K key)