sig
  type 'a t
  val create : '-> 'Lwt_mvar.t
  val create_empty : unit -> 'Lwt_mvar.t
  val put : 'Lwt_mvar.t -> '-> unit Lwt.t
  val take : 'Lwt_mvar.t -> 'Lwt.t
end