sig
  exception Empty
  exception OutOfBounds
  type 'a t
  and 'a cons
  val deref : 'Dllist.cons -> 'a
  val create : unit -> 'Dllist.t
  val first : 'Dllist.t -> 'Dllist.cons
  val last : 'Dllist.t -> 'Dllist.cons
  val next : 'Dllist.cons -> 'Dllist.cons
  val prev : 'Dllist.cons -> 'Dllist.cons
  val insert_end : '-> 'Dllist.t -> 'Dllist.cons
  val insert_before : '-> 'Dllist.cons -> 'Dllist.cons
  exception Cons_already_free
  val remove : 'Dllist.cons -> unit
  val count : 'Dllist.t -> int
  val to_list : 'Dllist.t -> 'Dllist.cons list
  val iter : ('-> unit) -> 'Dllist.t -> unit
end