sig type ('a, 'b) t = { enter : unit -> unit; leave : 'a Join.chan; wait : unit -> 'b; finished : unit Join.chan; } val create : ('a -> 'b -> 'b) -> 'b -> ('a, 'b) JoinCount.Dynamic.t end