anchor.diff:            (guard_to_string env g_env);
   
       let envbody = Env.set_range envbody body.pos in
  -    let body, cbody, guard =
  +    let body, cbody, guard_body =
           let should_check_expected_effect =
               match c_opt, (SS.compress body).n with
               | None, Tm_ascribed (_, (Inr expected_c, _), _) ->
  
positive.code:                           match t.n with
                            | Tm_arrow(bs_expected, c_expected) ->
                              let bs_expected, c_expected = SS.open_comp bs_expected c_expected in
                              let (env_bs_bs', bs', more, guard_env_bs, subst) = check_binders env_bs more_bs bs_expected in
                              let guard'_env = Env.close_guard env_bs bs guard_env_bs in
                              handle_more (env_bs_bs', bs@bs', more, Env.conj_guard guard_env guard'_env, subst) c_expected body
                            | _ ->
                              let body = U.abs more_bs body None in
  
negative.code:                         else match Rel.get_subtyping_prop env expected_t t with
                               | None ->
                                 raise_error (Err.basic_type_error env None expected_t t) (Env.get_range env)
                               | Some g_env ->
                                  TcUtil.label_guard
                                      (Env.get_range env)
                                      "Type annotation on parameter incompatible with the expected type"
                                      g_env
                        in
                        t, Env.conj_guard g1_env g2_env
                  in
                  let hd = {hd with sort=t} in
                  let b = hd, imp in
                  let b_expected = (hd_expected, imp') in
                  let env_b = push_binding env b in
                  let subst = maybe_extend_subst subst b_expected (S.bv_to_name hd) in
                  let env_bs, bs, rest, g'_env_b, subst = aux (env_b, subst) bs bs_expected in
                  let g'_env = Env.close_guard env_bs [b] g'_env_b in
                  env_bs, b::bs, rest, Env.conj_guard g_env g'_env, subst
  
            | rest, [] ->
  