But we pessimize a bit: for example int vs array of ints, or even
different types of arrays of ints. I don't know whether any refinement
is really worth implementing though.
I don't know either. I really hated this whole issue of having to be careful
when we overlap memory since it's not just temporaries but user-variables
in nested scopes.