Thanks so much. Personally it should probably use those by default, unless it's slower?
It’s because instead of
return func(...);
it has to do something like
with (ctx._other) { with (ctx._self) { return func(...); } }
And there are a couple edge cases where doing with (<id of a freshly destroyed instance>) will not do anything, so you don’t always want your with chain.
with (<id of a freshly destroyed instance>)
with