sig
  module type WEAKPLUS =
    sig
      type 'a t
      type key
      val create : int -> 'WeakPlus.WEAKPLUS.t
      val resize : ?size:int -> 'WeakPlus.WEAKPLUS.t -> unit
      val add : 'WeakPlus.WEAKPLUS.t -> WeakPlus.WEAKPLUS.key -> '-> unit
      val remove : 'WeakPlus.WEAKPLUS.t -> WeakPlus.WEAKPLUS.key -> unit
      val find' :
        'WeakPlus.WEAKPLUS.t -> WeakPlus.WEAKPLUS.key -> 'a option
      val find : 'WeakPlus.WEAKPLUS.t -> WeakPlus.WEAKPLUS.key -> 'a
      val mem : 'WeakPlus.WEAKPLUS.t -> WeakPlus.WEAKPLUS.key -> bool
      val count : 'WeakPlus.WEAKPLUS.t -> int
      val iter :
        (WeakPlus.WEAKPLUS.key -> '-> unit) ->
        'WeakPlus.WEAKPLUS.t -> unit
    end
  module Make :
    functor (H : Hashtbl.HashedType->
      sig
        type 'a t
        type key = H.t
        val create : int -> 'a t
        val resize : ?size:int -> 'a t -> unit
        val add : 'a t -> key -> '-> unit
        val remove : 'a t -> key -> unit
        val find' : 'a t -> key -> 'a option
        val find : 'a t -> key -> 'a
        val mem : 'a t -> key -> bool
        val count : 'a t -> int
        val iter : (key -> '-> unit) -> 'a t -> unit
      end
end