This change is all about getting the usage counts right.  The optimizer needs to keep track of how many times a particular dataset expression is used to stop operations being moved over shared expressions - causing work to become duplicated.

In this case newLeft and newRight didn't have their usage count incremented before transforming - which means if they were transformed into something else the usage count may not be correct.  The change does that - but only if newIf isn't already used - if it is then the child items will already have linked usages.