sig
  type ro = [ `RO ]
  type rw = [ `RW ]
  type ('a, 'mut) t
  type 'a vector = ('a, CCVector.rw) CCVector.t
  type 'a ro_vector = ('a, CCVector.ro) CCVector.t
  type 'a sequence = ('-> unit) -> unit
  type 'a klist = unit -> [ `Cons of 'a * 'CCVector.klist | `Nil ]
  type 'a gen = unit -> 'a option
  type 'a equal = '-> '-> bool
  type 'a ord = '-> '-> int
  type 'a printer = Buffer.t -> '-> unit
  type 'a formatter = Format.formatter -> '-> unit
  val freeze : ('a, 'b) CCVector.t -> ('a, CCVector.ro) CCVector.t
  val freeze_copy : ('a, 'b) CCVector.t -> ('a, CCVector.ro) CCVector.t
  val create : unit -> ('a, CCVector.rw) CCVector.t
  val create_with : ?capacity:int -> '-> ('a, CCVector.rw) CCVector.t
  val return : '-> ('a, 'mut) CCVector.t
  val make : int -> '-> ('a, 'mut) CCVector.t
  val init : int -> (int -> 'a) -> ('a, 'mut) CCVector.t
  val clear : ('a, CCVector.rw) CCVector.t -> unit
  val ensure_with : init:'-> ('a, CCVector.rw) CCVector.t -> int -> unit
  val ensure : ('a, CCVector.rw) CCVector.t -> int -> unit
  val is_empty : ('a, 'b) CCVector.t -> bool
  val push : ('a, CCVector.rw) CCVector.t -> '-> unit
  val append : ('a, CCVector.rw) CCVector.t -> ('a, 'b) CCVector.t -> unit
  val append_array : ('a, CCVector.rw) CCVector.t -> 'a array -> unit
  val append_seq :
    ('a, CCVector.rw) CCVector.t -> 'CCVector.sequence -> unit
  val append_list : ('a, CCVector.rw) CCVector.t -> 'a list -> unit
  val equal : 'CCVector.equal -> ('a, 'b) CCVector.t CCVector.equal
  val compare : 'CCVector.ord -> ('a, 'b) CCVector.t CCVector.ord
  exception Empty
  val pop : ('a, CCVector.rw) CCVector.t -> 'a option
  val pop_exn : ('a, CCVector.rw) CCVector.t -> 'a
  val top : ('a, 'b) CCVector.t -> 'a option
  val top_exn : ('a, 'b) CCVector.t -> 'a
  val copy : ('a, 'b) CCVector.t -> ('a, 'mut) CCVector.t
  val shrink : ('a, CCVector.rw) CCVector.t -> int -> unit
  val member : ?eq:('-> '-> bool) -> '-> ('a, 'b) CCVector.t -> bool
  val sort :
    ('-> '-> int) -> ('a, 'b) CCVector.t -> ('a, 'mut) CCVector.t
  val sort' : ('-> '-> int) -> ('a, CCVector.rw) CCVector.t -> unit
  val uniq_sort : ('-> '-> int) -> ('a, CCVector.rw) CCVector.t -> unit
  val iter : ('-> unit) -> ('a, 'b) CCVector.t -> unit
  val iteri : (int -> '-> unit) -> ('a, 'b) CCVector.t -> unit
  val map : ('-> 'b) -> ('a, 'c) CCVector.t -> ('b, 'mut) CCVector.t
  val filter : ('-> bool) -> ('a, 'b) CCVector.t -> ('a, 'mut) CCVector.t
  val filter' : ('-> bool) -> ('a, CCVector.rw) CCVector.t -> unit
  val fold : ('-> '-> 'b) -> '-> ('a, 'c) CCVector.t -> 'b
  val exists : ('-> bool) -> ('a, 'b) CCVector.t -> bool
  val for_all : ('-> bool) -> ('a, 'b) CCVector.t -> bool
  val find : ('-> bool) -> ('a, 'b) CCVector.t -> 'a option
  val find_exn : ('-> bool) -> ('a, 'b) CCVector.t -> 'a
  val find_map : ('-> 'b option) -> ('a, 'c) CCVector.t -> 'b option
  val filter_map :
    ('-> 'b option) -> ('a, 'c) CCVector.t -> ('b, 'mut) CCVector.t
  val flat_map :
    ('-> ('b, 'c) CCVector.t) ->
    ('a, 'd) CCVector.t -> ('b, 'mut) CCVector.t
  val flat_map_seq :
    ('-> 'CCVector.sequence) ->
    ('a, 'c) CCVector.t -> ('b, 'mut) CCVector.t
  val flat_map_list :
    ('-> 'b list) -> ('a, 'c) CCVector.t -> ('b, 'mut) CCVector.t
  val flat_map' :
    ('-> 'CCVector.sequence) ->
    ('a, 'c) CCVector.t -> ('b, 'mut) CCVector.t
  val ( >>= ) :
    ('a, 'c) CCVector.t ->
    ('-> ('b, 'd) CCVector.t) -> ('b, 'mut) CCVector.t
  val ( >|= ) : ('a, 'c) CCVector.t -> ('-> 'b) -> ('b, 'mut) CCVector.t
  val get : ('a, 'b) CCVector.t -> int -> 'a
  val set : ('a, CCVector.rw) CCVector.t -> int -> '-> unit
  val remove : ('a, CCVector.rw) CCVector.t -> int -> unit
  val rev : ('a, 'b) CCVector.t -> ('a, 'mut) CCVector.t
  val rev_in_place : ('a, CCVector.rw) CCVector.t -> unit
  val rev' : ('a, CCVector.rw) CCVector.t -> unit
  val rev_iter : ('-> unit) -> ('a, 'b) CCVector.t -> unit
  val size : ('a, 'b) CCVector.t -> int
  val length : ('a, 'b) CCVector.t -> int
  val capacity : ('a, 'b) CCVector.t -> int
  val unsafe_get_array : ('a, CCVector.rw) CCVector.t -> 'a array
  val ( -- ) : int -> int -> (int, 'mut) CCVector.t
  val ( --^ ) : int -> int -> (int, 'mut) CCVector.t
  val of_array : 'a array -> ('a, 'mut) CCVector.t
  val of_list : 'a list -> ('a, 'mut) CCVector.t
  val to_array : ('a, 'b) CCVector.t -> 'a array
  val to_list : ('a, 'b) CCVector.t -> 'a list
  val of_seq :
    ?init:('a, CCVector.rw) CCVector.t ->
    'CCVector.sequence -> ('a, CCVector.rw) CCVector.t
  val to_seq : ('a, 'b) CCVector.t -> 'CCVector.sequence
  val to_seq_rev : ('a, 'b) CCVector.t -> 'CCVector.sequence
  val slice : ('a, CCVector.rw) CCVector.t -> 'a array * int * int
  val slice_seq : ('a, 'b) CCVector.t -> int -> int -> 'CCVector.sequence
  val of_klist :
    ?init:('a, CCVector.rw) CCVector.t ->
    'CCVector.klist -> ('a, CCVector.rw) CCVector.t
  val to_klist : ('a, 'b) CCVector.t -> 'CCVector.klist
  val of_gen :
    ?init:('a, CCVector.rw) CCVector.t ->
    'CCVector.gen -> ('a, CCVector.rw) CCVector.t
  val to_gen : ('a, 'b) CCVector.t -> 'CCVector.gen
  val pp :
    ?start:string ->
    ?stop:string ->
    ?sep:string ->
    'CCVector.printer -> ('a, 'b) CCVector.t CCVector.printer
  val print :
    ?start:string ->
    ?stop:string ->
    ?sep:string ->
    'CCVector.formatter -> ('a, 'b) CCVector.t CCVector.formatter
end