sig
  type 'a t
  exception Empty
  val make : unit -> 'Mbox.t
  val push : 'Mbox.t -> '-> unit Event.event
  val pop : 'Mbox.t -> 'Event.event
  val is_empty : 'Mbox.t -> bool
  val pop_all : 'Mbox.t -> 'a list Event.event
end