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