sig
  val find_index : ('-> bool) -> 'a array -> int
  val find_index_from : ('-> bool) -> 'a array -> int -> int
  module type Comparable =
    sig
      type t
      val compare :
        ArrayExtras.Comparable.t -> ArrayExtras.Comparable.t -> int
    end
  module Sorted :
    functor (Comp : Comparable->
      sig
        type elem = Comp.t
        and t = ArrayExtras.Sorted.elem array
        val sort : ArrayExtras.Sorted.t -> unit
        val stable_sort : ArrayExtras.Sorted.t -> unit
        val fast_sort : ArrayExtras.Sorted.t -> unit
        val exists : ArrayExtras.Sorted.t -> ArrayExtras.Sorted.elem -> bool
        val find : ArrayExtras.Sorted.t -> ArrayExtras.Sorted.elem -> int
        val range :
          ArrayExtras.Sorted.t -> ArrayExtras.Sorted.elem -> int * int
      end
  val ensure : ('-> bool) -> 'a array -> bool
  val ensure_range : ('-> bool) -> 'a array -> int -> int -> bool
  val swap : 'a array -> int -> int -> unit
  val rev : 'a array -> unit
  val pop : 'a array -> 'a * 'a array
  val push : '-> 'a array -> 'a array
  val munge : cmp:('-> '-> int) -> f:('-> 'a) -> 'b array -> 'b array
  val stable_munge :
    cmp:('-> '-> int) -> f:('-> 'a) -> 'b array -> 'b array
  val fast_munge :
    cmp:('-> '-> int) -> f:('-> 'a) -> 'b array -> 'b array
end