This module defines the shared environment, Env, used for the compilation/translation and
execution of programmable transactions. While the “context” for each pass might be different,
the Env provides consistent access to shared components such as the VM or the protocol config.
This module provides a shared API amongst the ASTs for original command and argument locations.
Some translations might reorder or move commands/arguments, and as such we need to annotate
the values with the original location