sig
  type 'a arch = private
      Arch_dir of string * 'a * 'Signatures.ARCH.arch list
    | Arch_dir_pack of string * 'a * 'Signatures.ARCH.arch list
    | Arch_file of string * 'a
  val dir :
    string -> unit Signatures.ARCH.arch list -> unit Signatures.ARCH.arch
  val dir_pack :
    string -> unit Signatures.ARCH.arch list -> unit Signatures.ARCH.arch
  val file : string -> unit Signatures.ARCH.arch
  type info = private {
    current_path : string;
    include_dirs : string list;
    for_pack : string;
  }
  val annotate :
    'Signatures.ARCH.arch -> Signatures.ARCH.info Signatures.ARCH.arch
  val print :
    (Format.formatter -> '-> unit) ->
    Format.formatter -> 'Signatures.ARCH.arch -> unit
  val print_include_dirs : Format.formatter -> string list -> unit
  val print_info : Format.formatter -> Signatures.ARCH.info -> unit
  val iter_info : ('-> unit) -> 'Signatures.ARCH.arch -> unit
  val fold_info : ('-> '-> 'b) -> 'Signatures.ARCH.arch -> '-> 'b
  val iter_include_dirs :
    Signatures.ARCH.info Signatures.ARCH.arch -> (string -> unit) -> unit
  val mk_tables :
    Signatures.ARCH.info Signatures.ARCH.arch ->
    (string, string list) Hashtbl.t * (string, string) Hashtbl.t
  val print_table :
    (Format.formatter -> '-> unit) ->
    Format.formatter -> (string, 'a) Hashtbl.t -> unit
end