src/main/java/org/organicdesign/fp/collections/PersistentHashMap.java
public static <K,V> PersistentHashMap<K,V> of(Iterable<Map.Entry<K,V>> kvPairs) {
        if (kvPairs == null) { return empty(); }
        PersistentHashMap<K,V> m = empty();
        MutableHashMap<K,V> map = m.mutable();
        for (Map.Entry<K,V> entry : kvPairs) {
            if (entry != null) {
                map.assoc(entry.getKey(), entry.getValue());
            }
        }
        return map.immutable();
    }
public static <K,V> PersistentHashMap<K,V> of(Iterable<Map.Entry<K,V>> kvPairs) {
        if (kvPairs == null) { return empty(); }
        PersistentHashMap<K,V> m = empty();
        MutableHashMap<K,V> map = m.mutable();
        for (Map.Entry<K,V> entry : kvPairs) {
            if (entry != null) {
                map.assoc(entry.getKey(), entry.getValue());
            }
        }
        return map.immutable();
    }
Returns a new PersistentHashMap of the given keys and their paired values.  There is also a
varargs version of this method: {@link org.organicdesign.fp.StaticImports#map(Map.Entry...)}.  Use
the {@link org.organicdesign.fp.StaticImports#tup(Object, Object)} method to define key/value
pairs briefly and easily.

@param kvPairs Key/value pairs (to go into the map).  In the case of a duplicate key, later
values in the input list overwrite the earlier ones.  The resulting map can contain zero or one
null key and any number of null values.  Null k/v pairs will be silently ignored.

@return a new PersistentHashMap of the given key/value pairs