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

public class LetRecProducer extends BaseOptimizer
Converts :foo <- { ,,, } to letrec.

This optimizer must not be used within IndexFunItree. Because if an assignment in IndexFunItree is in the form above, it is already a result by LetInliner, and thus the rhs fun must not capture the lvar in the lhs recursively.