sig   type 'a t   val create : int -> 'Weak.t   val length : 'Weak.t -> int   val set : 'Weak.t -> int -> 'a option -> unit   val get : 'Weak.t -> int -> 'a option   val get_copy : 'Weak.t -> int -> 'a option   val check : 'Weak.t -> int -> bool   val fill : 'Weak.t -> int -> int -> 'a option -> unit   val blit : 'Weak.t -> int -> 'Weak.t -> int -> int -> unit   module type S =     sig       type data       type t       val create : int -> Weak.S.t       val clear : Weak.S.t -> unit       val merge : Weak.S.t -> Weak.S.data -> Weak.S.data       val add : Weak.S.t -> Weak.S.data -> unit       val remove : Weak.S.t -> Weak.S.data -> unit       val find : Weak.S.t -> Weak.S.data -> Weak.S.data       val find_all : Weak.S.t -> Weak.S.data -> Weak.S.data list       val mem : Weak.S.t -> Weak.S.data -> bool       val iter : (Weak.S.data -> unit) -> Weak.S.t -> unit       val fold : (Weak.S.data -> '-> 'a) -> Weak.S.t -> '-> 'a       val count : Weak.S.t -> int       val stats : Weak.S.t -> int * int * int * int * int * int     end   module Make :     functor (H : Hashtbl.HashedType->       sig         type data = H.t         type t         val create : int -> t         val clear : t -> unit         val merge : t -> data -> data         val add : t -> data -> unit         val remove : t -> data -> unit         val find : t -> data -> data         val find_all : t -> data -> data list         val mem : t -> data -> bool         val iter : (data -> unit) -> t -> unit         val fold : (data -> '-> 'a) -> t -> '-> 'a         val count : t -> int         val stats : t -> int * int * int * int * int * int       end end