anchor.diff:                      | Var v when v = var -> false
                       | _ -> Children e |> List.forall alwaysInterop  
                   if alwaysInterop body then
  -                    Let(var, jsFunc |> tr |> WithPosOf value, body |> BottomUp (function WithInterop -> Var var | e -> e) |> tr)
  +                    Let(var, jsFunc |> clean |> WithPosOf value, body |> BottomUp (function WithInterop -> Var var | e -> e) |> tr)
                   else tr expr
               match value with
               | TupledLambda (vars, lBody) ->
  
positive.code:                 tr expr
          // used by functions with rest argument
          | Call (NewArray arr, Constant (String "concat"), [ NewArray rest ]) ->
              NewArray (arr @ rest |> List.map tr)    
          | _ -> tr expr
       
      clean expr   
  
negative.code:                 | 1 -> inlineLet expr var value body
                  | _ -> expr
          | Sequential (a, b) when isMostlyPure a -> b
          | _ -> expr
  
      // keep rewriting with `step` bottom-up until reach a fixpoint
  