So after all this moaning and groaning and hand-wringing, I finally start to move out of the Triassic Era and into the Jurassic by replacing my clumsy fixed array values with EnumMaps. I get fairly well into the process, then run straight into a brick wall.
The Sappho interpreter uses a stack system for its calculations. The stack holds floating point numbers (floats), which can be coerced to integers if need be. But EnumMaps can’t take floats or integers as their keys; they take enumerated values. The stack can’t hold enumerated values. Therefore, Sappho could not process anything using the EnumMaps. Down in flames goes that idea.
And no, I’m not going to reprogram Sappho to have a stack that can take free-form Objects of any type. Sorry, that’s getting entirely too fancy for a problem of this low complexity.
So it’s back to simple flat arrays. I’m not even going to use ArrayLists (variable size arrays) because I know that none of these arrays will be changing their lengths.