Description
In code generation, adding many mutable states can be dangerous since we can hit the constant pool limit.
In the current code, each expression generates its own copy of mutable states and mutable states cannot be shared across different expression. There are many cases, though, in which this can be done and it can be useful. For instance, we create a UTC timezone object for each date function which requires it, even though we might reuse always the same.