Or I could still call it "push" and it could look like this: try (field.push(value)) { ... }
------ > Now imagine that try-catch-finally wrapper method was an inlined closure, and > it inlines the closure it receives, then you get a solution to your problem > with very little overhead. This may be in alignment with what you are saying. If I had a method "auto(oldValue, newValue)" that creats an inline AutoCloseable AIC instance, I could package up capture, mutate and restore within the enclosing scope. try (auto(field, value)) { ... }