Yes, but in the case of `ConstantFolding` the subsequent pattern _will_ match `Literal`, since a `Literal` is technically `foldable`.  Matching the next pattern causes the rule to invoke the expression evaluator and create an identical, wasted object.

In `NullPropogation`, a `Literal` will not match any of the later rules.  So in essence you are second guessing the code generated by the pattern matcher.  While there may be extreme cases where that is required for performance, I don't think this is one of them.