sig
type 'a t
val create : unit -> 'a Async.Std.Ivar.t
val read : 'a Async.Std.Ivar.t -> 'a Async.Std.Deferred.t
val fill : 'a Async.Std.Ivar.t -> 'a -> unit
val fill_if_empty : 'a Async.Std.Ivar.t -> 'a -> unit
val is_full : 'a Async.Std.Ivar.t -> bool
val is_empty : 'a Async.Std.Ivar.t -> bool
end