Perhaps in the future we might even consider using the lower_index_loads pass together with the constant folding passes on the rules for every `statement` and other non-terminal symbols.
I don't think I see the idea here?
I was just thinking that, since at some point we will need to do constant-folding at parse time (for instance just at the end of every `statement:` rule), for folding array indexes, array sizes, and initialization expressions, it may make sense to treat the `lower_index_loads` pass in the same way, because we may also need the passes to split loads there.