functor
  (S : sig type t val pretty : Format.formatter -> Datascope.t -> unit end->
  sig
    type data = S.t
    type t = Datascope.GenStates.data Inthash.t
    val states : Datascope.GenStates.t
    val clear : unit -> unit
    val add : int -> data -> unit
    val find : int -> data
    val mem : int -> bool
    val find : int -> Datascope.GenStates.data
    val replace : int -> Datascope.GenStates.data -> unit
    val add : int -> Datascope.GenStates.data -> unit
    val iter : (int -> Datascope.GenStates.data -> unit) -> unit
    val fold : (int -> Datascope.GenStates.data -> '-> 'a) -> '-> 'a
    val length : unit -> int
    val pretty : Format.formatter -> S.t Inthash.t -> unit
  end