functor (R : RANDOMACCESS) ->
  functor (PARAM : sig val max_height : int val leaf_size : int end) ->
    sig
      type 'a t
      exception Out_of_bounds
      val max_length : int
      val empty : 'a BatVect.Make.t
      val singleton : 'a -> 'a BatVect.Make.t
      val of_container : 'a R.t -> 'a BatVect.Make.t
      val to_container : 'a BatVect.Make.t -> 'a R.t
      val of_array : 'a array -> 'a BatVect.Make.t
      val to_array : 'a BatVect.Make.t -> 'a array
      val to_list : 'a BatVect.Make.t -> 'a list
      val of_list : 'a list -> 'a BatVect.Make.t
      val make : int -> 'a -> 'a BatVect.Make.t
      val init : int -> (int -> 'a) -> 'a BatVect.Make.t
      val is_empty : 'a BatVect.Make.t -> bool
      val height : 'a BatVect.Make.t -> int
      val length : 'a BatVect.Make.t -> int
      val balance : 'a BatVect.Make.t -> 'a BatVect.Make.t
      val concat :
        'a BatVect.Make.t -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val append : 'a -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val prepend : 'a -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val get : 'a BatVect.Make.t -> int -> 'a
      val at : 'a BatVect.Make.t -> int -> 'a
      val set : 'a BatVect.Make.t -> int -> 'a -> 'a BatVect.Make.t
      val modify :
        'a BatVect.Make.t -> int -> ('a -> 'a) -> 'a BatVect.Make.t
      val destructive_set : 'a BatVect.Make.t -> int -> 'a -> unit
      val sub : 'a BatVect.Make.t -> int -> int -> 'a BatVect.Make.t
      val insert :
        int -> 'a BatVect.Make.t -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val remove : int -> int -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val enum : 'a BatVect.Make.t -> 'a BatEnum.t
      val of_enum : 'a BatEnum.t -> 'a BatVect.Make.t
      val backwards : 'a BatVect.Make.t -> 'a BatEnum.t
      val of_backwards : 'a BatEnum.t -> 'a BatVect.Make.t
      val iter : ('a -> unit) -> 'a BatVect.Make.t -> unit
      val iteri : (int -> 'a -> unit) -> 'a BatVect.Make.t -> unit
      val rangeiter : ('a -> unit) -> int -> int -> 'a BatVect.Make.t -> unit
      val fold_left : ('b -> 'a -> 'b) -> 'b -> 'a BatVect.Make.t -> 'b
      val fold : ('b -> 'a -> 'b) -> 'b -> 'a BatVect.Make.t -> 'b
      val reduce : ('a -> 'a -> 'a) -> 'a BatVect.Make.t -> 'a
      val fold_right : ('a -> 'b -> 'b) -> 'a BatVect.Make.t -> 'b -> 'b
      val foldi : (int -> 'b -> 'a -> 'b) -> 'b -> 'a BatVect.Make.t -> 'b
      val map : ('a -> 'b) -> 'a BatVect.Make.t -> 'b BatVect.Make.t
      val mapi : (int -> 'a -> 'b) -> 'a BatVect.Make.t -> 'b BatVect.Make.t
      val for_all : ('a -> bool) -> 'a BatVect.Make.t -> bool
      val exists : ('a -> bool) -> 'a BatVect.Make.t -> bool
      val find : ('a -> bool) -> 'a BatVect.Make.t -> 'a
      val mem : 'a -> 'a BatVect.Make.t -> bool
      val memq : 'a -> 'a BatVect.Make.t -> bool
      val findi : ('a -> bool) -> 'a BatVect.Make.t -> int
      val filter : ('a -> bool) -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val filter_map :
        ('a -> 'b option) -> 'a BatVect.Make.t -> 'b BatVect.Make.t
      val find_all : ('a -> bool) -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val partition :
        ('a -> bool) ->
        'a BatVect.Make.t -> 'a BatVect.Make.t * 'a BatVect.Make.t
      val first : 'a BatVect.Make.t -> 'a
      val last : 'a BatVect.Make.t -> 'a
      val shift : 'a BatVect.Make.t -> 'a * 'a BatVect.Make.t
      val pop : 'a BatVect.Make.t -> 'a * 'a BatVect.Make.t
      val print :
        ?first:string ->
        ?last:string ->
        ?sep:string ->
        ('a BatInnerIO.output -> 'b -> unit) ->
        'a BatInnerIO.output -> 'b BatVect.Make.t -> unit
      val invariants : 'a BatVect.Make.t -> unit
    end