When looking at @spookylukey's evaluator, I noticed that the dirty-handling is done in pattern. That's on a pretty hot code path. Could we do that in message reference and term reference instead?