anchor.diff:           else PARTIAL_RETURN::lc.cflags
       else lc.cflags
     in
  -  let refine () =
  +  let refine () : comp * guard_t =
         let c, g_c = TcComm.lcomp_comp lc in
         let u_t =
             match comp_univ_opt c with
             | Some u_t -> u_t
             | None -> env.universe_of env (U.comp_result c)
         in
  -      let m =
  -        if m_opt |> is_none then C.effect_PURE_lid  //caller did not provide an M
  -        else if c |> U.comp_effect_name |> is_pure_effect env then m_opt |> must
  -        else C.effect_PURE_lid in  //c is GHOST, ignore M
         if U.is_tot_or_gtot_comp c
         then //AR: insert an M.return
              let retc, g_retc = return_value env m (Some u_t) (U.comp_result c) e in
  
positive.code: let is_pure_effect env l =
    let l = norm_eff_name env l in
    lid_equals l C.effect_PURE_lid
  
  let is_pure_or_ghost_effect env l =
    let l = norm_eff_name env l in
  
negative.code:             U.comp_set_flags bind_c flags, Env.conj_guards [g_c; g_ret; g_bind]
    in
    if not should_return then lc
    else let c, g = refine () in
         TcComm.lcomp_of_comp_guard c g
  
  let maybe_assume_result_eq_pure_term env e lc =
    maybe_assume_result_eq_pure_term_in_m env None e lc
  