sig
  type 'a t
  val create : unit -> 'Async_condition.t
  val signal : 'Async_condition.t -> '-> unit
  val broadcast : 'Async_condition.t -> '-> unit
  val wait : 'Async_condition.t -> 'Deferred.t
  val sexp_of_t :
    ('-> Sexplib.Sexp.t) -> 'Async_condition.t -> Sexplib.Sexp.t
end