sig
  type ('a, 'b) t = ('a, 'b) PdgIndex.FctIndex.t
  val create : int -> ('a, 'b) t
  val length : ('a, 'b) t -> int
  val copy : ('a, 'b) t -> ('a, 'b) t
  val merge :
    ('a, 'b) t ->
    ('a, 'b) t -> ('-> '-> 'a) -> ('-> '-> 'b) -> ('a, 'b) t
  val sgn : ('a, 'b) t -> 'PdgIndex.Signature.t
  val find_info : ('a, 'b) t -> PdgIndex.Key.t -> 'a
  val find_all : ('a, 'b) t -> PdgIndex.Key.t -> 'a list
  val find_call :
    ('a, 'b) t -> Cil_types.stmt -> 'b option * 'PdgIndex.Signature.t
  val find_call_key :
    ('a, 'b) t -> PdgIndex.Key.t -> 'b option * 'PdgIndex.Signature.t
  val find_info_call : ('a, 'b) t -> Cil_types.stmt -> 'b
  val find_info_call_key : ('a, 'b) t -> PdgIndex.Key.t -> 'b
  val fold_calls :
    (Cil_types.stmt -> 'a option * 'PdgIndex.Signature.t -> '-> 'c) ->
    ('b, 'a) t -> '-> 'c
  val add : ('a, 'b) t -> PdgIndex.Key.t -> '-> unit
  val add_or_replace : ('a, 'b) t -> PdgIndex.Key.t -> '-> unit
  val add_info_call :
    ('a, 'b) t -> Cil_types.stmt -> '-> replace:bool -> unit
  val add_info_call_key :
    ('a, 'b) t -> PdgIndex.Key.t -> '-> replace:bool -> unit
end