code: @NonNull
    public static <K, V> ImmutableMap<K, V> concat(
        @NonNull ImmutableMap<K, V> map1, @NonNull Map<K, V> map2) {
      ImmutableMap.Builder<K, V> builder = ImmutableMap.builder();
      for (Map.Entry<K, V> entry : map1.entrySet()) {
        if (!map2.containsKey(entry.getKey())) {
          builder.put(entry);
        }
      }
      builder.putAll(map2);
      return builder.build();
    }
docs: If the existing map has entries that collide with the new map, those old entries will be
  removed, but the new entries will appear at their new position in the iteration order of the
  resulting map. Example:
  
  <pre>{@code
  concat({a=>1, b=>2, c=>3}, {c=>4, a=>5}) == {b=>2, c=>4, a=>5}
  }</pre>