// assumes map never contains null values static AutoCloseable tempMapPutAll(Map map, Map toAdd) { if (map != null && nempty(toAdd)) { new LPair toRestore; for (key, value : toAdd) { if (key != null && value != null) { B old = map.put(key, value); if (!eq(old, value)) toRestore.add(pair(key, old)); } } ret -> { for (p : toRestore) mapPutOrRemove(map, p.a, p.b); }; } null; }