anchor.diff:   | Debug    of term * BU.time
   type stack = list<stack_elt>
   
  +let head_of t = let hd, _ = U.head_and_args' t in hd
   let mk t r = mk t None r
   let set_memo cfg (r:memo<'a>) (t:'a) =
     if cfg.memoize_lazy then
  
positive.code:     let t = mk_Tm_uinst t us in
      rebuild cfg env stack t
  
    | Arg (Clos(env_arg, tm, m, _), aq, r) :: stack ->
      log cfg  (fun () -> BU.print1 "Rebuilding with arg %s\n" (Print.term_to_string tm));
      //this needs to be tail recursive for reducing large terms
  
      // GM: This is basically saying "if exclude iota, don't memoize".
      // what's up with that?
  
negative.code:             rebuild cfg env stack t
  
            | Tm_app(hd, args)
              when not (cfg.steps.no_full_norm)
                && is_norm_request hd args
                && not (Ident.lid_equals cfg.tcenv.curmodule PC.prims_lid) ->
  