Constthe object from which we will start the transformation, potentially visiting and transforming its descendants along the way.
a dictionary mapping the various operation types to objects optionally containing preVisitor and transformer. The preVisitor allows you to provide TransformContext for the current object, altering how it will be transformed. The transformer allows you to manipulate the copy of the current object, and expects you to return the value that should take the current objects place.
Transform a single operation, similar to mapOperation, but also allowing you to target subTypes. e.g. wrapping a distinct around the all project operations not contained in an aggregate expression (invalid algebra anyway):