Operationally, you don't have to do the wrapping: since (a) is equivalent to ^a, you can substitute the implementation of the latter when you see the former.
Though if `(a)` is observably "no longer a value" of course then that's an issue. Which may or may not be a problem :-)