sig
  type 'a t
  type 'a node
  val get : 'a Lwt_sequence.node -> 'a
  val set : 'a Lwt_sequence.node -> 'a -> unit
  val remove : 'a Lwt_sequence.node -> unit
  val create : unit -> 'a Lwt_sequence.t
  val is_empty : 'a Lwt_sequence.t -> bool
  val length : 'a Lwt_sequence.t -> int
  val add_l : 'a -> 'a Lwt_sequence.t -> 'a Lwt_sequence.node
  val add_r : 'a -> 'a Lwt_sequence.t -> 'a Lwt_sequence.node
  exception Empty
  val take_l : 'a Lwt_sequence.t -> 'a
  val take_r : 'a Lwt_sequence.t -> 'a
  val take_opt_l : 'a Lwt_sequence.t -> 'a option
  val take_opt_r : 'a Lwt_sequence.t -> 'a option
  val transfer_l : 'a Lwt_sequence.t -> 'a Lwt_sequence.t -> unit
  val transfer_r : 'a Lwt_sequence.t -> 'a Lwt_sequence.t -> unit
  val iter_l : ('a -> unit) -> 'a Lwt_sequence.t -> unit
  val iter_r : ('a -> unit) -> 'a Lwt_sequence.t -> unit
  val iter_node_l :
    ('a Lwt_sequence.node -> unit) -> 'a Lwt_sequence.t -> unit
  val iter_node_r :
    ('a Lwt_sequence.node -> unit) -> 'a Lwt_sequence.t -> unit
  val fold_l : ('a -> 'b -> 'b) -> 'a Lwt_sequence.t -> 'b -> 'b
  val fold_r : ('a -> 'b -> 'b) -> 'a Lwt_sequence.t -> 'b -> 'b
  val find_node_opt_l :
    ('a -> bool) -> 'a Lwt_sequence.t -> 'a Lwt_sequence.node option
  val find_node_opt_r :
    ('a -> bool) -> 'a Lwt_sequence.t -> 'a Lwt_sequence.node option
  val find_node_l : ('a -> bool) -> 'a Lwt_sequence.t -> 'a Lwt_sequence.node
  val find_node_r : ('a -> bool) -> 'a Lwt_sequence.t -> 'a Lwt_sequence.node
end