RootCauseunvalidated

it's fairly common to end up with multiple pointers to the same nodes — in your AST, each instance of `Foo` or a pointer to `Foo` will have a pointer to where `Foo` is defined. Tension: these can't be `unique_ptr`, because they're not unique. Outcome: common subexpression elimination, so where you have two identical sub-trees, you merge those into a single subtree.

7335289f-313b-4a16-b462-b47e972bfa4a

it's fairly common to end up with multiple pointers to the same nodes — in your AST, each instance of Foo or a pointer to Foo will have a pointer to where Foo is defined. Tension: these can't be unique_ptr, because they're not unique. Outcome: common subexpression elimination, so where you have two identical sub-trees, you merge those into a single subtree.