code: public static <K, V> V getOrPutGetNew(Map<K, V> map, K key,
              Supplier<V> newValueSupplier) {
          synchronized (map) {
              return map.computeIfAbsent(key, k -> newValueSupplier.get());
          }
      }
docs: Gets or put get new.
  
  @param <K>              the type parameter
  @param <V>              the type parameter
  @param map              the map
  @param key              the key
  @param newValueSupplier the new value supplier
  @return the or put get new