anchor.diff:                  | None
                   | Some ({v=Pat_wild _}) -> body
                   | Some pat ->
  -                  S.mk (Tm_match(S.bv_to_name x, [U.branch (pat, None, body)])) None body.pos in
  +                  S.mk (Tm_match(S.bv_to_name x, desugar_disjunctive_pattern pat None body)) None body.pos in
                 mk <| Tm_let((false, [mk_lb (Inl x, x.sort, t1)]), Subst.close [S.mk_binder x] body)
             end in
           if is_mutable
  
positive.code: module S = FStar.Syntax.Syntax
  module U = FStar.Syntax.Util
  module BU = FStar.Util
  
  let trans_aqual = function
    | Some AST.Implicit -> Some S.imp_tag
  
negative.code:           | None -> None
            | Some e -> Some (desugar_term env e) in
          let b = desugar_term env b in
          desugar_disjunctive_pattern pat wopt b
        in
        mk <| Tm_match(desugar_term env e, List.collect desugar_branch branches)
  
      | Ascribed(e, t, tac_opt) ->
        let annot = if is_comp_type env t
  