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