anchor.diff:  
   (* -------------------------------------------------------------------- *)
   and maybe_doc_of_primexp_r outer (env : env) (e : exp) =
  -    match Absyn.Util.destruct_app e with
  +    let rec strip_tapp e =
  +        match Absyn.Util.compress_exp e with
  +        | Exp_tapp     (e, _)
  +        | Exp_ascribed (e, _) -> strip_tapp e
  +        | _ -> e
  +    in
  +
  +    let e = Absyn.Util.compress_exp e in
  +    let (c, args) = Absyn.Util.destruct_app e in
  +    let c = strip_tapp c in
  +
  +    match (c, args) with
       | (Exp_fvar (x, _), [(e1, _); (e2, _)]) when is_prim_ns x.v.ns -> begin
           let test (y, _, _) = x.v.ident.idText = y in
   
  
positive.code:             let d1 = doc_of_exp (prio, Left ) env e1 in
              let d2 = doc_of_exp (prio, Right) env e2 in
              Some (maybe_paren outer prio (d1 +. %txt +. d2))
      end
  
      | _ -> None
  
negative.code: 
  (* -------------------------------------------------------------------- *)
  and doc_of_exp_r outer (env : env) (e : exp) =
      let e = Absyn.Util.compress_exp e in
  
      match Absyn.Util.destruct_app e with
      | (e, args) when not (List.isEmpty args) ->
          let e    = e    |> doc_of_exp (e_app_prio, ILeft) env in
  