sig
  module Debug :
    functor
      (Flat_queue : sig
                      module Slots : Tuple_type.Slots
                      module Slot : Tuple_type.Slot
                      type 'slots t
                      val invariant :
                        'Invariant_intf.inv -> 'a t Invariant_intf.inv
                      val create :
                        ?capacity:int ->
                        ('a, 'b) Slots.t -> ('a, 'b) Slots.t t
                      val capacity : 'a t -> int
                      val set_capacity : 'a t -> int -> unit
                      val length : 'a t -> int
                      val is_empty : 'a t -> bool
                      val get :
                        ('b, 'v) Slots.t t -> int -> ('v, 'a) Slot.t -> 'a
                      val unsafe_get :
                        ('b, 'v) Slots.t t -> int -> ('v, 'a) Slot.t -> 'a
                      val set :
                        ('b, 'v) Slots.t t ->
                        int -> ('v, 'a) Slot.t -> '-> unit
                      val unsafe_set :
                        ('b, 'v) Slots.t t ->
                        int -> ('v, 'a) Slot.t -> '-> unit
                      val drop_front : ?n:int -> 'a t -> unit
                      val clear : 'a t -> unit
                      val enqueue1 : 'a0 Slots.t1 t -> 'a0 -> unit
                      val enqueue2 :
                        ('a0, 'a1) Slots.t2 t -> 'a0 -> 'a1 -> unit
                      val enqueue3 :
                        ('a0, 'a1, 'a2) Slots.t3 t ->
                        'a0 -> 'a1 -> 'a2 -> unit
                      val enqueue4 :
                        ('a0, 'a1, 'a2, 'a3) Slots.t4 t ->
                        'a0 -> 'a1 -> 'a2 -> 'a3 -> unit
                      val enqueue5 :
                        ('a0, 'a1, 'a2, 'a3, 'a4) Slots.t5 t ->
                        'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> unit
                      val enqueue6 :
                        ('a0, 'a1, 'a2, 'a3, 'a4, 'a5) Slots.t6 t ->
                        'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> unit
                      val enqueue7 :
                        ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6) Slots.t7 t ->
                        'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> unit
                      val enqueue8 :
                        ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Slots.t8 t ->
                        'a0 ->
                        'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> 'a7 -> unit
                      val enqueue9 :
                        ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8)
                        Slots.t9 t ->
                        'a0 ->
                        'a1 ->
                        'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> 'a7 -> 'a8 -> unit
                      val get_all_slots :
                        ('tuple, 'a) Slots.t t -> int -> 'tuple
                      val set_all_slots :
                        ('tuple, 'a) Slots.t t -> int -> 'tuple -> unit
                      val fold :
                        ('tuple, 'b) Slots.t t ->
                        init:'-> f:('-> 'tuple -> 'a) -> 'a
                      val iter :
                        ('tuple, 'a) Slots.t t -> f:('tuple -> unit) -> unit
                      val sexp_of_t :
                        ('slots -> Sexplib.Sexp.t) ->
                        'slots t -> Sexplib.Sexp.t
                    end->
      sig
        module Slots : Tuple_type.Slots
        module Slot : Tuple_type.Slot
        type 'slots t
        val invariant : 'Invariant_intf.inv -> 'a t Invariant_intf.inv
        val create : ?capacity:int -> ('a, 'b) Slots.t -> ('a, 'b) Slots.t t
        val capacity : 'a t -> int
        val set_capacity : 'a t -> int -> unit
        val length : 'a t -> int
        val is_empty : 'a t -> bool
        val get : ('b, 'v) Slots.t t -> int -> ('v, 'a) Slot.t -> 'a
        val unsafe_get : ('b, 'v) Slots.t t -> int -> ('v, 'a) Slot.t -> 'a
        val set : ('b, 'v) Slots.t t -> int -> ('v, 'a) Slot.t -> '-> unit
        val unsafe_set :
          ('b, 'v) Slots.t t -> int -> ('v, 'a) Slot.t -> '-> unit
        val drop_front : ?n:int -> 'a t -> unit
        val clear : 'a t -> unit
        val enqueue1 : 'a0 Slots.t1 t -> 'a0 -> unit
        val enqueue2 : ('a0, 'a1) Slots.t2 t -> 'a0 -> 'a1 -> unit
        val enqueue3 :
          ('a0, 'a1, 'a2) Slots.t3 t -> 'a0 -> 'a1 -> 'a2 -> unit
        val enqueue4 :
          ('a0, 'a1, 'a2, 'a3) Slots.t4 t -> 'a0 -> 'a1 -> 'a2 -> 'a3 -> unit
        val enqueue5 :
          ('a0, 'a1, 'a2, 'a3, 'a4) Slots.t5 t ->
          'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> unit
        val enqueue6 :
          ('a0, 'a1, 'a2, 'a3, 'a4, 'a5) Slots.t6 t ->
          'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> unit
        val enqueue7 :
          ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6) Slots.t7 t ->
          'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> unit
        val enqueue8 :
          ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Slots.t8 t ->
          'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> 'a7 -> unit
        val enqueue9 :
          ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Slots.t9 t ->
          'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> 'a7 -> 'a8 -> unit
        val get_all_slots : ('tuple, 'a) Slots.t t -> int -> 'tuple
        val set_all_slots : ('tuple, 'a) Slots.t t -> int -> 'tuple -> unit
        val fold :
          ('tuple, 'b) Slots.t t -> init:'-> f:('-> 'tuple -> 'a) -> 'a
        val iter : ('tuple, 'a) Slots.t t -> f:('tuple -> unit) -> unit
        val sexp_of_t :
          ('slots -> Sexplib.Sexp.t) -> 'slots t -> Sexplib.Sexp.t
      end
end