pub fn store_var<BeforeOverwrite, AfterStore>(
stack: &mut Vec<Value>,
vars: &mut Vec<Value>,
index: usize,
var_names: &HashMap<usize, String>,
before_overwrite: BeforeOverwrite,
after_store: AfterStore,
) -> Result<(), RuntimeError>