functor (S : Strat.T->
  sig
    module Strategy :
      sig
        type t = S.t
        val default : t
        val grow : t -> int -> int
        val shrink : t -> real_len:int -> new_len:int -> int
      end
    type strategy = Strategy.t
    type 'a t
    val length : 'a t -> int
    val lix : 'a t -> int
    val real_length : 'a t -> int
    val real_lix : 'a t -> int
    val get : 'a t -> int -> 'a
    val set : 'a t -> int -> '-> unit
    val sempty : strategy -> 'a t
    val empty : unit -> 'a t
    val screate : strategy -> int -> '-> 'a t
    val create : int -> '-> 'a t
    val smake : strategy -> int -> '-> 'a t
    val make : int -> '-> 'a t
    val sinit : strategy -> int -> (int -> 'a) -> 'a t
    val init : int -> (int -> 'a) -> 'a t
    val get_strategy : 'a t -> strategy
    val set_strategy : 'a t -> strategy -> unit
    val put_strategy : 'a t -> strategy -> unit
    val enforce_strategy : 'a t -> unit
    val make_matrix : int -> int -> '-> 'a t t
    val copy : 'a t -> 'a t
    val sub : 'a t -> int -> int -> 'a t
    val fill : 'a t -> int -> int -> '-> unit
    val blit : 'a t -> int -> 'a t -> int -> int -> unit
    val append : 'a t -> 'a t -> 'a t
    val concat : 'a t list -> 'a t
    val add_one : 'a t -> '-> unit
    val remove_one : 'a t -> unit
    val remove_n : 'a t -> int -> unit
    val remove_range : 'a t -> int -> int -> unit
    val clear : 'a t -> unit
    val swap : 'a t -> int -> int -> unit
    val swap_in_last : 'a t -> int -> unit
    val to_array : 'a t -> 'a array
    val sof_array : strategy -> 'a array -> 'a t
    val of_array : 'a array -> 'a t
    val to_list : 'a t -> 'a list
    val sof_list : strategy -> 'a list -> 'a t
    val of_list : 'a list -> 'a t
    val iter : ('-> unit) -> 'a t -> unit
    val map : ('-> 'b) -> 'a t -> 'b t
    val iteri : (int -> '-> unit) -> 'a t -> unit
    val mapi : (int -> '-> 'b) -> 'a t -> 'b t
    val fold_left : ('-> '-> 'b) -> '-> 'a t -> 'b
    val fold_right : ('-> '-> 'b) -> 'a t -> '-> 'b
    val for_all : ('-> bool) -> 'a t -> bool
    val exists : ('-> bool) -> 'a t -> bool
    val mem : '-> 'a t -> bool
    val memq : '-> 'a t -> bool
    val pos : '-> 'a t -> int option
    val posq : '-> 'a t -> int option
    val find : ('-> bool) -> 'a t -> 'a
    val find_index : ('-> bool) -> 'a t -> int -> int
    val filter : ('-> bool) -> 'a t -> 'a t
    val find_all : ('-> bool) -> 'a t -> 'a t
    val filter_in_place : ('-> bool) -> 'a t -> unit
    val partition : ('-> bool) -> 'a t -> 'a t * 'a t
    val unsafe_get : 'a t -> int -> 'a
    val unsafe_set : 'a t -> int -> '-> unit
    val unsafe_sub : 'a t -> int -> int -> 'a t
    val unsafe_fill : 'a t -> int -> int -> '-> unit
    val unsafe_blit : 'a t -> int -> 'a t -> int -> int -> unit
    val unsafe_remove_one : 'a t -> unit
    val unsafe_remove_n : 'a t -> int -> unit
    val unsafe_swap : 'a t -> int -> int -> unit
    val unsafe_swap_in_last : 'a t -> int -> unit
  end