anchor.diff:      if i = 0 then
         Some (mk (A.PatWild))
       else
  -      BU.bind_opt (resugar_arg_qual qual) (fun aq -> mk (A.PatVar(bv_as_unique_ident x, )))
  +      BU.bind_opt (resugar_arg_qual qual) (fun aq -> Some (mk (A.PatVar(bv_as_unique_ident x, aq))))
     | _ ->
       BU.bind_opt (resugar_arg_qual qual)
         begin fun aq ->
           let pat = mk (A.PatVar(bv_as_unique_ident x, aq)) in
           if Options.print_bound_var_types() then
  -          mk (A.PatAscribed(pat, resugar_term x.sort))
  +          Some (mk (A.PatAscribed(pat, resugar_term x.sort)))
           else
  -          pat
  +          Some pat
         end
   
   and resugar_match_pat (p:S.pat) : A.pattern =
  
positive.code:     in
      let leftover_datacons, tycons = List.fold_left retrieve_datacons_and_resugar (datacon_ses, []) decl_typ_ses in
      begin match leftover_datacons with
        | [] -> true
          (* TODO : documentation should be retrieved from the desugaring environment at some point *)
          Some (decl'_to_decl se (Tycon (false, List.map (fun tyc -> tyc, None) tycons)))
        | [se] ->
          assert (se.sigqual |> BU.for_some (function | ExceptionConstructor -> true | _ false))
          (* Exception constructor declaration case *)
          Some (decl'_to_decl (Exception (failwith "NIY")))
        | _ ->
          failwith "Should not happen hopefully"
  
    | Sig_decl_typ _ ->
        (failwith "NIY")
  
    | Sig_let (lbs, _, attrs) ->
        (failwith "NIY")
  
negative.code:       (failwith "NIY")
  
    | Sig_pragma p ->
      Some (decl'_to_decl se (A.Pragma (resugar_pragma p)))
  
    (* Already desugared in one of the above case or non-relevant *)
    | Sig_inductive_typ _
  