code: public static @NotNull ImmutableValueMap copyOf(@NotNull Map<String, Object> map) {
      if (map instanceof ValueMap) {
        return new ImmutableValueMap((ValueMap)map);
      }
      else {
        return new ImmutableValueMap(map);
      }
    }
docs: Returns an immutable map containing the same entries as {@code map}. If {@code map} somehow contains entries with
  duplicate keys (for example, if
  it is a {@code SortedMap} whose comparator is not <i>consistent with
  equals</i>), the results of this method are undefined.
  <p>
  Despite the method name, this method attempts to avoid actually copying the data when it is safe to do so. The
  exact circumstances under which a copy will or will not be performed are undocumented and subject to change.
  @param map Map
  @return ImmutableValueMap
  @throws NullPointerException if any key or value in {@code map} is null