anchor.diff:  (* env does not contain scrutinee, or any of the pattern-bound variables                                            *)
   (* the returned terms are well-formed in an environment extended with the scrutinee only                            *)
   (********************************************************************************************************************)
  -and tc_eqn scrutinee env return_comp_opt branch
  +and tc_eqn scrutinee env asc_opt branch
           : (pat * option<term> * term)                                                             (* checked branch *)
           * term       (* the guard condition for taking this branch, used by the caller for the exhaustiveness check *)
           * lident                                                                 (* effect label of the lcomp below *)
  
positive.code:                 t_eqns
                  ([], Env.trivial_guard, false) in
        (* bind_cases adds an exhaustiveness check *)
        TcUtil.bind_cases env res_t cases guard_x,
        g,
        erasable
      in
  
      let cres = TcUtil.bind e1.pos env (Some e1) c1 (Some guard_x, c_branches) in
      let cres =
  
negative.code:   (* 3. Check the branch *)
    let branch_exp, c, g_branch =
      let branch_exp =
        match asc_opt with
        | None -> branch_exp
        | Some asc ->
          asc
          |> SS.subst_ascription [NT (scrutinee, norm_pat_exp)]
          |> U.ascribe branch_exp in
      let branch_exp, c, g_branch = tc_term pat_env branch_exp in
      let branch_exp =
        match asc_opt with
        | None -> branch_exp
        | Some _ ->
          match (SS.compress branch_exp).n with
  