sig
  type ('a, 'b) t = { collect : 'a Join.chan; wait : unit -> 'b; }
  val create :
    ('a -> 'b -> 'b) -> 'b -> int -> ('a, 'b) JoinCount.Collector.t
end