sig
  type 'a t =
    'Cbuffer.t = {
    mutable data : 'a array;
    mutable start : int;
    mutable length : int;
    never_shrink : bool;
    dummy : 'a;
  }
  val create : ?never_shrink:bool -> '-> Core.Std.Int.t -> 'a t
  val length : 'a t -> int
  val phys_length : 'a t -> int
  val is_full : 'a t -> bool
  val check_index : string -> 'a t -> int -> unit
  val get : 'a t -> int -> 'a
  val set : 'a t -> int -> '-> unit
  val copy_data :
    src:'Core.Std.Array.t -> dst:'Core.Std.Array.t -> int -> int -> unit
  val swap_array : 'a t -> int -> unit
  val expand : 'a t -> unit
  val shrink : 'a t -> unit
  val to_array : 'a t -> 'Core.Std.Array.t
  val add : 'a t -> '-> unit
  val drop_from : 'a t -> int -> unit
  val drop_last : 'a t -> unit
  val iter : 'a t -> f:(int -> '-> unit) -> unit
  val iterr : 'a t -> f:(int -> '-> unit) -> unit
  val of_array : 'Core.Std.Array.t -> 'a t
  val cb_compare :
    f:('-> '-> bool) ->
    b1:'a t -> b2:'b t -> s1:int -> s2:int -> n:int -> bool
  val drop_old :
    ?cmp:('-> '-> int) ->
    ?free:('-> unit) -> f:('-> 'a) -> cutoff:'-> 'b t -> int
  val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
  val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
end