Class BranchWithElseInliner

All Implemented Interfaces:
Function<Itree,Itree>, UnaryOperator<Itree>, ItreeVisitor<Itree>

public class BranchWithElseInliner extends BaseOptimizer
Applies inlining of calls of branch in the form below.
 branch(
   { cond1 } { body1 }
   { cond2 } { body2 }
   ,,,
   { condn } { bodyn }
   $true { elseBody }
 )
 

This inlining must take place under the body of IndexFunItree.

Conds must not modify local vars, because it wrongly affects dereferences in other conds and result bodies.