fix Usage Flags
open override fun fixUsageFlags(localData: MutableList<AvailVariableAccessNote?>, outerData: MutableList<AvailVariableAccessNote?>, codeGenerator: AvailCodeGenerator)
The instructions of a block are being iterated over. Coordinate optimizations between instructions using localData and outerData, two lists manipulated by overrides of this method. Treat each instruction as though it is the last one in the block, and save enough information in the lists to be able to undo consequences of this assumption when a later instruction shows it to be unwarranted.
The data lists are keyed by local or outer index. Each entry is either null or a AvailVariableAccessNote, which keeps track of the previous time a get or push happened.
The receiver sets the value of a local variable, so it can't be an argument (they aren't wrapped in a variable).