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