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