sig
  type 'a t = 'PdgIndex.Signature.t
  type t_in_key =
    PdgIndex.Signature.t_in_key = private
      InCtrl
    | InNum of int
    | InImpl of Locations.Zone.t
  type t_out_key =
    PdgIndex.Signature.t_out_key = private
      OutRet
    | OutLoc of Locations.Zone.t
  type t_key =
    PdgIndex.Signature.t_key = private
      In of t_in_key
    | Out of t_out_key
  val empty : 'a t
  val mk_undef_in_key : Locations.Zone.t -> t_in_key
  val cmp_in_key : t_in_key -> t_in_key -> int
  val cmp_out_key : t_out_key -> t_out_key -> int
  val equal_out_key : t_out_key -> t_out_key -> bool
  val find_info : 'a t -> t_key -> 'a
  val find_input : 'a t -> int -> 'a
  val find_in_ctrl : 'a t -> 'a
  val find_in_top : 'a t -> 'a
  val find_in_info : 'a t -> t_in_key -> 'a
  val find_out_ret : 'a t -> 'a
  val find_out_info : 'a t -> t_out_key -> 'a
  val fold : ('-> t_key * '-> 'a) -> '-> 'b t -> 'a
  val fold_num_inputs : ('-> int * '-> 'a) -> '-> 'b t -> 'a
  val fold_impl_inputs :
    ('-> Locations.Zone.t * '-> 'a) -> '-> 'b t -> 'a
  val fold_matching_impl_inputs :
    Locations.Zone.t ->
    ('-> Locations.Zone.t * '-> 'a) -> '-> 'b t -> 'a
  val fold_all_inputs : ('-> t_in_key * '-> 'a) -> '-> 'b t -> 'a
  val fold_all_outputs : ('-> t_out_key * '-> 'a) -> '-> 'b t -> 'a
  val pretty :
    (Format.formatter -> '-> unit) -> Format.formatter -> 'a t -> unit
  val pretty_key : Format.formatter -> t_key -> unit
  val pretty_in_key : Format.formatter -> t_in_key -> unit
end