anchor.diff:            (* KM : I don't think that '-' is resugared correctly here *)
             //NS: this seems to produce the wrong output on things like
             begin match D.handleable_args_length op with
  -            | 1 -> mk (A.Op(op, resugar (last args)))
  -            | 2 -> mk (A.Op(op, resugar (last_two args)))
  -            | 3 -> mk (A.Op(op, resugar (last_three args)))
  +            | 1 when List.length args > 0 -> mk (A.Op(op, resugar (last args)))
  +            | 2 when List.length args > 1 -> mk (A.Op(op, resugar (last_two args)))
  +            | 3 when List.length args > 2 -> mk (A.Op(op, resugar (last_three args)))
               | _ -> resugar_as_app e args
             end
       end
  
positive.code: module D = FStar.Parser.ToDocument
  
  let bv_as_unique_ident (x:S.bv) : I.ident =
    let unique_name =  x.ppname.idText in
    I.mk_ident (unique_name, x.ppname.idRange)
  
  let resugar_arg_qual (q:option<S.arg_qualifier>) : option<A.arg_qualifier> =
    match q with
  
negative.code:               aux ((t,aq)::l) tl
          in
          aux [] c.effect_args
         else
          c.effect_args
        in
        let args = List.map(fun (e,_) -> (resugar_term e, A.Nothing)) args in
        let rec aux l = function
         | [] -> l
         | hd::tl ->
            match hd with
            | DECREASES e ->
              let e = (resugar_term e, A.Nothing) in
              aux (e::l) tl
            | _ -> aux l tl
        in
        let decrease = aux [] c.flags in
        mk (A.Construct(c.effect_name, result::decrease@args))
      else
        mk (A.Construct(c.effect_name, [result]))
  
  and resugar_bv_as_binder (x:S.bv) r: A.binder =
    let e = resugar_term x.sort in
  