module type SA = sig type data type t val make : data -> t val node : t -> data val hash : t -> int val uid : t -> Uid.t val equal : t -> t -> bool val stats : unit -> unit val init : unit -> unit end module type S = sig type data type t = private { id : Uid.t; key : int; node : data } val make : data -> t val node : t -> data val hash : t -> int val uid : t -> Uid.t val equal : t -> t -> bool val stats : unit -> unit val init : unit -> unit end module Make (H : Hashtbl.HashedType) : S with type data = H.t