sig type ('a, 'b) reagent = ('a, 'b) R.t type lock = Lock.t type t val create : unit -> t val wait : lock -> t -> bool val signal : t -> unit val broadcast : t -> unit end