sig
  type 'a t
  exception Empty
  val create : unit -> 'a CCDeque.t
  val clear : 'a CCDeque.t -> unit
  val is_empty : 'a CCDeque.t -> bool
  val equal : ?eq:('a -> 'a -> bool) -> 'a CCDeque.t -> 'a CCDeque.t -> bool
  val compare : ?cmp:('a -> 'a -> int) -> 'a CCDeque.t -> 'a CCDeque.t -> int
  val length : 'a CCDeque.t -> int
  val push_front : 'a CCDeque.t -> 'a -> unit
  val push_back : 'a CCDeque.t -> 'a -> unit
  val peek_front : 'a CCDeque.t -> 'a
  val peek_back : 'a CCDeque.t -> 'a
  val take_back : 'a CCDeque.t -> 'a
  val take_front : 'a CCDeque.t -> 'a
  val append_front : into:'a CCDeque.t -> 'a CCDeque.t -> unit
  val append_back : into:'a CCDeque.t -> 'a CCDeque.t -> unit
  val iter : ('a -> unit) -> 'a CCDeque.t -> unit
  val fold : ('b -> 'a -> 'b) -> 'b -> 'a CCDeque.t -> 'b
  type 'a gen = unit -> 'a option
  type 'a sequence = ('a -> unit) -> unit
  val of_seq : 'a CCDeque.sequence -> 'a CCDeque.t
  val to_seq : 'a CCDeque.t -> 'a CCDeque.sequence
  val of_gen : 'a CCDeque.gen -> 'a CCDeque.t
  val to_gen : 'a CCDeque.t -> 'a CCDeque.gen
  val add_seq_front : 'a CCDeque.t -> 'a CCDeque.sequence -> unit
  val add_seq_back : 'a CCDeque.t -> 'a CCDeque.sequence -> unit
  val copy : 'a CCDeque.t -> 'a CCDeque.t
  val of_list : 'a list -> 'a CCDeque.t
  val to_list : 'a CCDeque.t -> 'a list
  val to_rev_list : 'a CCDeque.t -> 'a list
  type 'a printer = Format.formatter -> 'a -> unit
  val print : 'a CCDeque.printer -> 'a CCDeque.t CCDeque.printer
end