anchor.diff:              | _::t -> last_three t
         in
         let resugar_as_app e args =
  -        let args = args |> List.map (fun (e, qual) ->
  -              resugar_term e) in
  +        let args = args |> List.map (fun (e, qual) -> resugar_term e, qual) in
           let e = resugar_term e in
  -        List.fold_left(fun acc x -> mk (A.App(acc, x, A.Nothing))) e args
  +        List.fold_left (fun acc (x, qual) -> mk (A.App(acc, x, resugar_imp qual))) e args
         in
         let args = if (Options.print_implicits()) then args else filter_imp args
         in
  
positive.code:     if b then None
      else Some (Some A.Implicit)
    | Some S.Equality -> Some (Some A.Equality)
  
  let rec universe_to_int n u =
    match u with
  
negative.code:                       | _ -> failwith "wrong Data_app head format"
                      in
                      let head, universes = aux head in
                      let universes =
                          List.map (fun u -> (resugar_universe u t.pos, A.UnivApp)) universes
                      in
                      let args = List.map (fun (t, q) -> (resugar_term t, resugar_imp q)) args in
                      let args =
                          // ToDocument doesn't expect uvar that is added by the
                          // typechecker in tuple constructor
                          // TODO: where should be store the universe information?
                          if C.is_tuple_data_lid' head || not (Options.print_universes ()) then
                              args
                          else universes @ args
                       in
                       mk (A.Construct(head, args))
                  | Tm_meta(_, m) ->
                    // the Tm_app for Data_app could be wrapped inside Tm_meta(_, Meta_monadic) after TypeChecker
                    // applies monadic_application
  