sig
  type pos = { line : int; col : int; offset : int; }
  type range = {
    start_pos : Pre_sexp.Annot.pos;
    end_pos : Pre_sexp.Annot.pos;
  }
  type t =
      Atom of Pre_sexp.Annot.range * Type.t
    | List of Pre_sexp.Annot.range * Pre_sexp.Annot.t list * Type.t
  type 'a conv = [ `Error of exn * Pre_sexp.Annot.t | `Result of 'a ]
  exception Conv_exn of string * exn
  type stack = {
    mutable positions : Pre_sexp.Annot.pos list;
    mutable stack : Pre_sexp.Annot.t list list;
  }
  val get_sexp : Pre_sexp.Annot.t -> Type.t
  val get_range : Pre_sexp.Annot.t -> Pre_sexp.Annot.range
  exception Annot_sexp of Pre_sexp.Annot.t
  val find_sexp : Pre_sexp.Annot.t -> Type.t -> Pre_sexp.Annot.t option
end