public static @NotNull <K, V> ConcurrentMap<K, V> create(@NotNull Function<? super K, ? extends V> computeValue,
                                                           @NotNull Supplier<? extends ConcurrentMap<K, V>> mapCreator) {
    return new ConcurrentFactoryMap<K, V>() {
      @Override
      protected @Nullable V create(K key) {
        return computeValue.fun(key);
      }

      @Override
      protected @NotNull ConcurrentMap<K, V> createMap() {
        return mapCreator.get();
      }
    };
  }
public static @NotNull <K, V> ConcurrentMap<K, V> create(@NotNull Function<? super K, ? extends V> computeValue,
                                                           @NotNull Supplier<? extends ConcurrentMap<K, V>> mapCreator)