public @NotNull <V> V putCachedValue(Key<V> key, @NotNull V value) {
    Object oldValue = myState.myCache.putIfAbsent(key, value);
    if (oldValue != null) {
      @SuppressWarnings("unchecked") V v = (V)oldValue;
      return v;
    }
    return value;
  }
public @NotNull <V> V putCachedValue(Key<V> key, @NotNull V value)