### Is your feature request related to a problem or challenge? Part of https://github.com/apache/datafusion/issues/9637 As part of making the planner faster, we are updating the optimizer passes to avoid copying `LogicalPlan` and `Expr` (see https://github.com/apache/datafusion/issues/9637) ### Describe the solution you'd like I would like to reduce the amount of copying in this pass (even though it doesn't appear in current profiling) ### Describe alternatives you've considered Apply the model from @Lordworms in https://github.com/apache/datafusion/pull/10166 to this pass 2. Update OptimizerRule::supports_rewrite` to return true 1. Update `OptimizerRule` to use `rewrite` 3. Update the pass itself to not copy the LogicalPlan (ideally using the [`TreeNode`](https://github.com/apache/datafusion/blob/b41ef20c5dad7bdd674e3cc5f35a9c99efae676c/datafusion/common/src/tree_node.rs#L33-L94) API) - it is implemented for `LogicalPlan` ([API](https://github.com/apache/datafusion/blob/b41ef20c5dad7bdd674e3cc5f35a9c99efae676c/datafusion/expr/src/logical_plan/tree_node.rs#L18-L38)) and `Expr` ([API](https://github.com/apache/datafusion/blob/b41ef20c5dad7bdd674e3cc5f35a9c99efae676c/datafusion/expr/src/tree_node.rs#L18)) Other examples: https://github.com/apache/datafusion/pull/10218 ### Additional context