A dyn-compatible version of Eq trait.
The implementation constraints for this trait are the same as for Eq:
the implementation must be reflexive, symmetric, and transitive.
Additionally, if two values can be compared with DynEq and PartialEq then
they must be DynEq-equal if and only if they are PartialEq-equal.
It is therefore strongly discouraged to implement this trait for types
that implement PartialEq<Other> or Eq<Other> for any type Other other than Self.
Check if the given PhysicalExpr is dynamic.
Internally this calls snapshot_generation to check if the generation is non-zero,
any dynamic PhysicalExpr should have a non-zero generation.
Check the generation of this PhysicalExpr.
Dynamic PhysicalExprs may have a generation that is incremented
every time the state of the PhysicalExpr changes.
If the generation changes that means this PhysicalExpr or one of its children
has changed since the last time it was evaluated.
Returns a copy of this expr if we change any child according to the pointer comparison.
The size of children must be equal to the size of PhysicalExpr::children().