sig
  exception Bug of string
  exception Empty
  type 'a t = 'Fqueue.t
  val test_invariants : 'a t -> unit
  val empty : 'a t
  val push : '-> 'a t -> 'a t
  val push_top : '-> 'a t -> 'a t
  val enq : '-> 'a t -> 'a t
  val bot_exn : 'a t -> 'a
  val bot : 'a t -> 'a option
  val top_exn : 'a t -> 'a
  val top : 'a t -> 'a option
  val pop_exn : 'a t -> 'a * 'a t
  val pop : 'a t -> ('a * 'a t) option
  val deq : 'a t -> ('a * 'a t) option
  val deq_exn : 'a t -> 'a * 'a t
  val discard : 'a t -> 'a t
  val to_list : 'a t -> 'a list
  val length : 'a t -> int
  val is_empty : 'a t -> bool
end