sig
  module WeakHash :
    sig
      type t
      type data
      val create : int -> Monitor_sig.Monitor.Tag.WeakHash.t
      val clear : Monitor_sig.Monitor.Tag.WeakHash.t -> unit
      val merge :
        Monitor_sig.Monitor.Tag.WeakHash.t ->
        Monitor_sig.Monitor.Tag.WeakHash.data ->
        Monitor_sig.Monitor.Tag.WeakHash.data
      val add :
        Monitor_sig.Monitor.Tag.WeakHash.t ->
        Monitor_sig.Monitor.Tag.WeakHash.data -> unit
      val remove :
        Monitor_sig.Monitor.Tag.WeakHash.t ->
        Monitor_sig.Monitor.Tag.WeakHash.data -> unit
      val find :
        Monitor_sig.Monitor.Tag.WeakHash.t ->
        Monitor_sig.Monitor.Tag.WeakHash.data ->
        Monitor_sig.Monitor.Tag.WeakHash.data
      val find_all :
        Monitor_sig.Monitor.Tag.WeakHash.t ->
        Monitor_sig.Monitor.Tag.WeakHash.data ->
        Monitor_sig.Monitor.Tag.WeakHash.data list
      val mem :
        Monitor_sig.Monitor.Tag.WeakHash.t ->
        Monitor_sig.Monitor.Tag.WeakHash.data -> bool
      val iter :
        (Monitor_sig.Monitor.Tag.WeakHash.data -> unit) ->
        Monitor_sig.Monitor.Tag.WeakHash.t -> unit
      val fold :
        (Monitor_sig.Monitor.Tag.WeakHash.data -> '-> 'a) ->
        Monitor_sig.Monitor.Tag.WeakHash.t -> '-> 'a
      val count : Monitor_sig.Monitor.Tag.WeakHash.t -> int
      val stats :
        Monitor_sig.Monitor.Tag.WeakHash.t ->
        int * int * int * int * int * int
    end
  type t
  val create :
    ?size:bool ->
    ?count:bool ->
    ?fct_size:(Monitor_sig.Monitor.Tag.WeakHash.t -> Int64.t) ->
    ?period:int -> string -> Monitor_sig.Monitor.Tag.t
  val kill : Monitor_sig.Monitor.Tag.t -> unit
  val set_period : Monitor_sig.Monitor.Tag.t -> int -> unit
  val mark : Monitor_sig.Monitor.Tag.t -> '-> 'a
end