sig
  module Make :
    functor (L : Lists.ListSig->
      sig
        type 'a t
        val empty : 'Reins.DoubleList.Make.t
        val is_empty : 'Reins.DoubleList.Make.t -> bool
        val at_front : 'a t -> bool
        val at_back : 'a t -> bool
        val length : 'Reins.DoubleList.Make.t -> int
        val next_length : 'Reins.DoubleList.Make.t -> int
        val prev_length : 'Reins.DoubleList.Make.t -> int
        val rev : 'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val hd : 'Reins.DoubleList.Make.t -> 'a
        val tl : 'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val pop :
          'Reins.DoubleList.Make.t -> 'a * 'Reins.DoubleList.Make.t
        val last : 'Reins.DoubleList.Make.t -> 'a
        val next : 'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val prev_hd : 'Reins.DoubleList.Make.t -> 'a
        val prev_tl :
          'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val prev_pop :
          'Reins.DoubleList.Make.t -> 'a * 'Reins.DoubleList.Make.t
        val prev : 'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val cons :
          '-> 'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val prev_cons :
          '-> 'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val snoc :
          '-> 'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val prev_snoc :
          '-> 'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val append :
          'Reins.DoubleList.Make.t ->
          'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val splice :
          'Reins.DoubleList.Make.t ->
          'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val flatten :
          'Reins.DoubleList.Make.t Reins.DoubleList.Make.t ->
          'Reins.DoubleList.Make.t
        val from_list : 'a list -> 'Reins.DoubleList.Make.t
        val to_list : 'Reins.DoubleList.Make.t -> 'a list
        val iter : ('-> unit) -> 'Reins.DoubleList.Make.t -> unit
        val fold : ('-> '-> 'a) -> '-> 'Reins.DoubleList.Make.t -> 'a
        val rev_map :
          ('-> 'b) ->
          'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val map :
          ('-> 'b) ->
          'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t
        val to_string :
          ('-> string) -> 'Reins.DoubleList.Make.t -> string
        val compare :
          ('-> '-> int) ->
          'Reins.DoubleList.Make.t -> 'Reins.DoubleList.Make.t -> int
        val gen :
          (?size:int -> Random.State.t -> 'a) ->
          ?size:int -> Random.State.t -> 'Reins.DoubleList.Make.t
        type 'a list_ = 'a t
        type 'a cursor = 'a t
        val to_cursor : 'a list_ -> 'a cursor
        val from_cursor : 'a cursor -> 'a list_
        val at_front : 'a cursor -> bool
        val at_back : 'a cursor -> bool
        val move_next : 'a cursor -> 'a cursor
        val move_prev : 'a cursor -> 'a cursor
        val goto_front : 'a cursor -> 'a cursor
        val goto_back : 'a cursor -> 'a cursor
        val value : 'a cursor -> 'a option
        val list : 'a cursor -> 'a list_
        val replace_list : 'a list_ -> 'a cursor -> 'a cursor
      end
end