sig
  type loc = Lexing.position * Lexing.position
  exception Atd_error of string
  type annot = Atd_ast.annot_section list
  and annot_section = string * (Atd_ast.loc * Atd_ast.annot_field list)
  and annot_field = string * (Atd_ast.loc * string option)
  type full_module = Atd_ast.module_head * Atd_ast.module_body
  and module_head = Atd_ast.loc * Atd_ast.annot
  and module_body = Atd_ast.module_item list
  and module_item = [ `Type of Atd_ast.type_def ]
  and type_def =
      Atd_ast.loc * (string * Atd_ast.type_param * Atd_ast.annot) *
      Atd_ast.type_expr
  and type_param = string list
  and type_expr =
      [ `List of Atd_ast.loc * Atd_ast.type_expr * Atd_ast.annot
      | `Name of Atd_ast.loc * Atd_ast.type_inst * Atd_ast.annot
      | `Option of Atd_ast.loc * Atd_ast.type_expr * Atd_ast.annot
      | `Record of Atd_ast.loc * Atd_ast.field list * Atd_ast.annot
      | `Shared of Atd_ast.loc * Atd_ast.type_expr * Atd_ast.annot
      | `Sum of Atd_ast.loc * Atd_ast.variant list * Atd_ast.annot
      | `Tuple of Atd_ast.loc * Atd_ast.cell list * Atd_ast.annot
      | `Tvar of Atd_ast.loc * string ]
  and type_inst = Atd_ast.loc * string * Atd_ast.type_expr list
  and variant =
      [ `Inherit of Atd_ast.loc * Atd_ast.type_expr
      | `Variant of
          Atd_ast.loc * (string * Atd_ast.annot) * Atd_ast.type_expr option ]
  and cell = Atd_ast.loc * Atd_ast.type_expr * Atd_ast.annot
  and field_kind = [ `Optional | `Required | `With_default ]
  and field =
      [ `Field of
          Atd_ast.loc * (string * Atd_ast.field_kind * Atd_ast.annot) *
          Atd_ast.type_expr
      | `Inherit of Atd_ast.loc * Atd_ast.type_expr ]
  val loc_of_type_expr : Atd_ast.type_expr -> Atd_ast.loc
  val set_type_expr_loc :
    Atd_ast.loc -> Atd_ast.type_expr -> Atd_ast.type_expr
  val string_of_loc : Atd_ast.loc -> string
  val error : string -> 'a
  val error_at : Atd_ast.loc -> string -> 'a
  val dummy_loc : Atd_ast.loc
  val annot_of_type_expr : Atd_ast.type_expr -> Atd_ast.annot
  val map_annot :
    (Atd_ast.annot -> Atd_ast.annot) ->
    Atd_ast.type_expr -> Atd_ast.type_expr
  val fold : (Atd_ast.type_expr -> '-> 'a) -> Atd_ast.type_expr -> '-> 'a
  val extract_type_names :
    ?ignorable:string list -> Atd_ast.type_expr -> string list
  val is_parametrized : Atd_ast.type_expr -> bool
end