sig
  type 'a t
  val map2 :
    ('-> '-> 'c) ->
    'UtilsLib.ImArray.t -> 'UtilsLib.ImArray.t -> 'UtilsLib.ImArray.t
  external length : 'UtilsLib.ImArray.t -> int = "%array_length"
  external get : 'UtilsLib.ImArray.t -> int -> 'a = "%array_safe_get"
  external make : int -> '-> 'UtilsLib.ImArray.t = "caml_make_vect"
  external create : int -> '-> 'UtilsLib.ImArray.t = "caml_make_vect"
  val init : int -> (int -> 'a) -> 'UtilsLib.ImArray.t
  val make_matrix :
    int -> int -> '-> 'UtilsLib.ImArray.t UtilsLib.ImArray.t
  val create_matrix :
    int -> int -> '-> 'UtilsLib.ImArray.t UtilsLib.ImArray.t
  val append :
    'UtilsLib.ImArray.t -> 'UtilsLib.ImArray.t -> 'UtilsLib.ImArray.t
  val concat : 'UtilsLib.ImArray.t list -> 'UtilsLib.ImArray.t
  val sub : 'UtilsLib.ImArray.t -> int -> int -> 'UtilsLib.ImArray.t
  val copy : 'UtilsLib.ImArray.t -> 'UtilsLib.ImArray.t
  val to_list : 'UtilsLib.ImArray.t -> 'a list
  val of_list : 'a list -> 'UtilsLib.ImArray.t
  val iter : ('-> unit) -> 'UtilsLib.ImArray.t -> unit
  val map : ('-> 'b) -> 'UtilsLib.ImArray.t -> 'UtilsLib.ImArray.t
  val iteri : (int -> '-> unit) -> 'UtilsLib.ImArray.t -> unit
  val mapi :
    (int -> '-> 'b) -> 'UtilsLib.ImArray.t -> 'UtilsLib.ImArray.t
  val fold_left : ('-> '-> 'a) -> '-> 'UtilsLib.ImArray.t -> 'a
  val fold_right : ('-> '-> 'a) -> 'UtilsLib.ImArray.t -> '-> 'a
  val sort :
    ('-> '-> int) -> 'UtilsLib.ImArray.t -> 'UtilsLib.ImArray.t
  val stable_sort :
    ('-> '-> int) -> 'UtilsLib.ImArray.t -> 'UtilsLib.ImArray.t
  val fast_sort :
    ('-> '-> int) -> 'UtilsLib.ImArray.t -> 'UtilsLib.ImArray.t
  external unsafe_get : 'UtilsLib.ImArray.t -> int -> 'a
    = "%array_unsafe_get"
end