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