sig   module Array :     sig       module type S =         sig           type elt           type t           val empty : CCRingBuffer.Array.S.t           val make :             int -> CCRingBuffer.Array.S.elt -> CCRingBuffer.Array.S.t           val length : CCRingBuffer.Array.S.t -> int           val get : CCRingBuffer.Array.S.t -> int -> CCRingBuffer.Array.S.elt           val set :             CCRingBuffer.Array.S.t -> int -> CCRingBuffer.Array.S.elt -> unit           val sub :             CCRingBuffer.Array.S.t -> int -> int -> CCRingBuffer.Array.S.t           val copy : CCRingBuffer.Array.S.t -> CCRingBuffer.Array.S.t           val blit :             CCRingBuffer.Array.S.t ->             int -> CCRingBuffer.Array.S.t -> int -> int -> unit           val iter :             (CCRingBuffer.Array.S.elt -> unit) ->             CCRingBuffer.Array.S.t -> unit         end       module Byte :         sig           type elt = char           type t = Bytes.t           val empty : t           val make : int -> elt -> t           val length : t -> int           val get : t -> int -> elt           val set : t -> int -> elt -> unit           val sub : t -> int -> int -> t           val copy : t -> t           val blit : t -> int -> t -> int -> int -> unit           val iter : (elt -> unit) -> t -> unit         end       module Make :         functor (Elt : sig type t end->           sig             type elt = Elt.t             type t = Elt.t array             val empty : t             val make : int -> elt -> t             val length : t -> int             val get : t -> int -> elt             val set : t -> int -> elt -> unit             val sub : t -> int -> int -> t             val copy : t -> t             val blit : t -> int -> t -> int -> int -> unit             val iter : (elt -> unit) -> t -> unit           end     end   module type S =     sig       module Array : Array.S       type t       exception Empty       val create : ?bounded:bool -> int -> CCRingBuffer.S.t       val copy : CCRingBuffer.S.t -> CCRingBuffer.S.t       val capacity : CCRingBuffer.S.t -> int       val max_capacity : CCRingBuffer.S.t -> int option       val length : CCRingBuffer.S.t -> int       val blit_from : CCRingBuffer.S.t -> Array.t -> int -> int -> unit       val blit_into : CCRingBuffer.S.t -> Array.t -> int -> int -> int       val append : CCRingBuffer.S.t -> into:CCRingBuffer.S.t -> unit       val to_list : CCRingBuffer.S.t -> Array.elt list       val clear : CCRingBuffer.S.t -> unit       val reset : CCRingBuffer.S.t -> unit       val is_empty : CCRingBuffer.S.t -> bool       val junk_front : CCRingBuffer.S.t -> unit       val junk_back : CCRingBuffer.S.t -> unit       val skip : CCRingBuffer.S.t -> int -> unit       val iter : CCRingBuffer.S.t -> f:(Array.elt -> unit) -> unit       val iteri : CCRingBuffer.S.t -> f:(int -> Array.elt -> unit) -> unit       val get_front : CCRingBuffer.S.t -> int -> Array.elt       val get_back : CCRingBuffer.S.t -> int -> Array.elt       val push_back : CCRingBuffer.S.t -> Array.elt -> unit       val peek_front : CCRingBuffer.S.t -> Array.elt       val peek_back : CCRingBuffer.S.t -> Array.elt       val take_back : CCRingBuffer.S.t -> Array.elt option       val take_back_exn : CCRingBuffer.S.t -> Array.elt       val take_front : CCRingBuffer.S.t -> Array.elt option       val take_front_exn : CCRingBuffer.S.t -> Array.elt       val of_array : Array.t -> CCRingBuffer.S.t       val to_array : CCRingBuffer.S.t -> Array.t     end   module Byte :     sig       module Array :         sig           type elt = char           type t = Bytes.t           val empty : t           val make : int -> elt -> t           val length : t -> int           val get : t -> int -> elt           val set : t -> int -> elt -> unit           val sub : t -> int -> int -> t           val copy : t -> t           val blit : t -> int -> t -> int -> int -> unit           val iter : (elt -> unit) -> t -> unit         end       type t       exception Empty       val create : ?bounded:bool -> int -> t       val copy : t -> t       val capacity : t -> int       val max_capacity : t -> int option       val length : t -> int       val blit_from : t -> Array.t -> int -> int -> unit       val blit_into : t -> Array.t -> int -> int -> int       val append : t -> into:t -> unit       val to_list : t -> Array.elt list       val clear : t -> unit       val reset : t -> unit       val is_empty : t -> bool       val junk_front : t -> unit       val junk_back : t -> unit       val skip : t -> int -> unit       val iter : t -> f:(Array.elt -> unit) -> unit       val iteri : t -> f:(int -> Array.elt -> unit) -> unit       val get_front : t -> int -> Array.elt       val get_back : t -> int -> Array.elt       val push_back : t -> Array.elt -> unit       val peek_front : t -> Array.elt       val peek_back : t -> Array.elt       val take_back : t -> Array.elt option       val take_back_exn : t -> Array.elt       val take_front : t -> Array.elt option       val take_front_exn : t -> Array.elt       val of_array : Array.t -> t       val to_array : t -> Array.t     end   module MakeFromArray :     functor (A : Array.S->       sig         module Array :           sig             type elt = A.elt             type t = A.t             val empty : t             val make : int -> elt -> t             val length : t -> int             val get : t -> int -> elt             val set : t -> int -> elt -> unit             val sub : t -> int -> int -> t             val copy : t -> t             val blit : t -> int -> t -> int -> int -> unit             val iter : (elt -> unit) -> t -> unit           end         type t         exception Empty         val create : ?bounded:bool -> int -> t         val copy : t -> t         val capacity : t -> int         val max_capacity : t -> int option         val length : t -> int         val blit_from : t -> Array.t -> int -> int -> unit         val blit_into : t -> Array.t -> int -> int -> int         val append : t -> into:t -> unit         val to_list : t -> Array.elt list         val clear : t -> unit         val reset : t -> unit         val is_empty : t -> bool         val junk_front : t -> unit         val junk_back : t -> unit         val skip : t -> int -> unit         val iter : t -> f:(Array.elt -> unit) -> unit         val iteri : t -> f:(int -> Array.elt -> unit) -> unit         val get_front : t -> int -> Array.elt         val get_back : t -> int -> Array.elt         val push_back : t -> Array.elt -> unit         val peek_front : t -> Array.elt         val peek_back : t -> Array.elt         val take_back : t -> Array.elt option         val take_back_exn : t -> Array.elt         val take_front : t -> Array.elt option         val take_front_exn : t -> Array.elt         val of_array : Array.t -> t         val to_array : t -> Array.t       end   module Make :     functor (X : sig type t end->       sig         module Array :           sig             type elt = X.t             type t = X.t array             val empty : t             val make : int -> elt -> t             val length : t -> int             val get : t -> int -> elt             val set : t -> int -> elt -> unit             val sub : t -> int -> int -> t             val copy : t -> t             val blit : t -> int -> t -> int -> int -> unit             val iter : (elt -> unit) -> t -> unit           end         type t         exception Empty         val create : ?bounded:bool -> int -> t         val copy : t -> t         val capacity : t -> int         val max_capacity : t -> int option         val length : t -> int         val blit_from : t -> Array.t -> int -> int -> unit         val blit_into : t -> Array.t -> int -> int -> int         val append : t -> into:t -> unit         val to_list : t -> Array.elt list         val clear : t -> unit         val reset : t -> unit         val is_empty : t -> bool         val junk_front : t -> unit         val junk_back : t -> unit         val skip : t -> int -> unit         val iter : t -> f:(Array.elt -> unit) -> unit         val iteri : t -> f:(int -> Array.elt -> unit) -> unit         val get_front : t -> int -> Array.elt         val get_back : t -> int -> Array.elt         val push_back : t -> Array.elt -> unit         val peek_front : t -> Array.elt         val peek_back : t -> Array.elt         val take_back : t -> Array.elt option         val take_back_exn : t -> Array.elt         val take_front : t -> Array.elt option         val take_front_exn : t -> Array.elt         val of_array : Array.t -> t         val to_array : t -> Array.t       end end