// 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;
}