sig
  type 'a sequence = ('-> unit) -> unit
  type 'a t = private { mutable size : int; mutable vec : 'a array; }
  val is_empty : 'OLinq_vec.t -> bool
  val length : 'OLinq_vec.t -> int
  val return : '-> 'OLinq_vec.t
  val create : unit -> 'OLinq_vec.t
  val push : 'OLinq_vec.t -> '-> unit
  val init : int -> (int -> 'a) -> 'OLinq_vec.t
  val get : 'OLinq_vec.t -> int -> 'a
  val set : 'OLinq_vec.t -> int -> '-> unit
  val map : ('-> 'b) -> 'OLinq_vec.t -> 'OLinq_vec.t
  val flat_map_seq :
    ('-> 'OLinq_vec.sequence) -> 'OLinq_vec.t -> 'OLinq_vec.t
  val fold : ('-> '-> 'a) -> '-> 'OLinq_vec.t -> 'a
  val iteri : f:(int -> '-> unit) -> 'OLinq_vec.t -> unit
  val append_seq : 'OLinq_vec.t -> 'OLinq_vec.sequence -> unit
  val of_seq : 'OLinq_vec.sequence -> 'OLinq_vec.t
  val of_list : 'a list -> 'OLinq_vec.t
  val of_array : 'a array -> 'OLinq_vec.t
  val to_seq : 'OLinq_vec.t -> 'OLinq_vec.sequence
  val to_list : 'OLinq_vec.t -> 'a list
  val to_array : 'OLinq_vec.t -> 'a array
end