Description
When a suspension is created when unparsing, we create a copy of the VariableMap so that future newVariableInstances do not affect the supension. The current VariableMap internals uses a Map of ArrayBuffers, both of which are fairly expensive to copy, with the overhead showing up heavily when profiling. We should change the VariableMap internals to use a data structure that allows fast copies, while still maintaining constant time lookups.