sig
  type 'a xarray
  type 'a t = 'XArray.xarray
  val init : ?bufsize:int -> int -> '-> (int -> 'a) -> 'XArray.xarray
  val make : ?bufsize:int -> int -> '-> 'XArray.xarray
  val length : 'XArray.xarray -> int
  val get : 'XArray.xarray -> int -> 'a
  val set : 'XArray.xarray -> int -> '-> unit
  type index
  val nth : 'XArray.xarray -> int -> XArray.index
  val first : 'XArray.xarray -> XArray.index
  val last : 'XArray.xarray -> XArray.index
  val look : 'XArray.xarray -> XArray.index -> 'a
  val next : 'XArray.t -> XArray.index -> XArray.index
  val prev : 'XArray.t -> XArray.index -> XArray.index
  val move : 'XArray.t -> XArray.index -> int -> XArray.index
  val out_of_range : 'XArray.xarray -> XArray.index -> bool
  val compare_index : 'XArray.xarray -> XArray.index -> XArray.index -> int
  val clear : 'XArray.xarray -> unit
  val reset : 'XArray.xarray -> unit
  val copy : 'XArray.xarray -> 'XArray.xarray
  val sub : 'XArray.xarray -> int -> int -> 'XArray.xarray
  val add_element : 'XArray.xarray -> '-> unit
  val add_array : 'XArray.xarray -> 'a array -> unit
  val add_xarray : 'XArray.xarray -> 'XArray.xarray -> unit
  val append : 'XArray.xarray -> 'XArray.xarray -> 'XArray.xarray
  val iter : ('-> unit) -> 'XArray.xarray -> unit
  val array_of : 'XArray.xarray -> 'a array
  val shrink : 'XArray.xarray -> int -> unit
end