sig
  type ('a, 'b, 'c, 'd) t = ('a, 'b, 'c, 'd) Biocaml_accu.t
  val create :
    ?n:int -> '-> ('-> 'c) -> ('-> '-> 'a) -> ('b, 'c, 'd, 'a) t
  val add : ('a, 'b, 'c, 'd) t -> '-> '-> unit
  val enum : ('a, 'b, 'c, 'd) t -> ('b * 'd) Batteries.Enum.t
  val get : ('a, 'b, 'c, 'd) t -> '-> 'd
  type 'a counter = ('a, 'a, int, int) t
  module Counter :
    sig
      type 'a t = 'a counter
      val create : ?n:int -> unit -> 'a t
      val add : 'a counter -> '-> int -> unit
      val tick : 'a counter -> '-> unit
    end
  val counts :
    ('-> 'b) -> 'Batteries.Enum.t -> ('b * int) Batteries.Enum.t
end