sig
  type 'a ind
  type ('a, 'b) t
  val create : ?step:int -> unit -> ('a, 'b) Searray.t
  val add : ('a, 'b) Searray.t -> '-> 'Searray.ind
  val get : ('a, 'b) Searray.t -> 'Searray.ind -> 'b
  val set : ('a, 'b) Searray.t -> 'Searray.ind -> '-> unit
  val find : ('a, 'b) Searray.t -> ('-> int) -> 'Searray.ind
  val copy : ?copy:('-> 'b) -> ('a, 'b) Searray.t -> ('a, 'b) Searray.t
  val length : ('a, 'b) Searray.t -> int
  val iteri : ('Searray.ind -> '-> unit) -> ('a, 'b) Searray.t -> unit
  val iter : ('-> unit) -> ('a, 'b) Searray.t -> unit
  val fold_left : ('-> '-> 'c) -> '-> ('a, 'b) Searray.t -> 'c
  val fold_right : ('-> '-> 'c) -> ('a, 'b) Searray.t -> '-> 'c
  val fold_lefti :
    ('-> 'Searray.ind -> '-> 'c) -> '-> ('a, 'b) Searray.t -> 'c
  val fold_righti :
    ('Searray.ind -> '-> '-> 'c) -> ('a, 'b) Searray.t -> '-> 'c
  val to_array : ('a, 'b) Searray.t -> 'b array
  val mapi :
    ('Searray.ind -> '-> 'c) -> ('a, 'b) Searray.t -> ('a, 'c) Searray.t
  val mapi_as_list :
    ('Searray.ind -> '-> 'c) -> ('a, 'b) Searray.t -> 'c list
  val insert : ('a, 'b) Searray.t -> 'Searray.ind -> '-> unit
  val int : 'Searray.ind -> int
  val ( @> ) : ('a, 'b) Searray.t -> int -> 'Searray.ind
  val ( @~ ) : ('a, 'b) Searray.t -> int -> 'b
  val ( @@ ) : ('a, 'b) Searray.t -> 'Searray.ind -> 'b
  val ( ~~ ) : 'Searray.ind -> int
end