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