sig
  module type GenArray =
    sig
      type 'a t
      val create : int -> 'a -> 'a GenArray.GenArray.t
      val length : 'a GenArray.GenArray.t -> int
      val get : 'a GenArray.GenArray.t -> int -> 'a
      val set : 'a GenArray.GenArray.t -> int -> 'a -> unit
      val init : int -> (int -> 'a) -> 'a GenArray.GenArray.t
      val make : int -> 'a -> 'a GenArray.GenArray.t
      val append :
        'a GenArray.GenArray.t ->
        'a GenArray.GenArray.t -> 'a GenArray.GenArray.t
      val concat : 'a GenArray.GenArray.t list -> 'a GenArray.GenArray.t
      val sub :
        'a GenArray.GenArray.t -> int -> int -> 'a GenArray.GenArray.t
      val copy : 'a GenArray.GenArray.t -> 'a GenArray.GenArray.t
      val fill : 'a GenArray.GenArray.t -> int -> int -> 'a -> unit
      val of_list : default:'a -> 'a list -> 'a GenArray.GenArray.t
      val iter : ('a -> unit) -> 'a GenArray.GenArray.t -> unit
      val iteri : (int -> 'a -> unit) -> 'a GenArray.GenArray.t -> unit
      val blit :
        'a GenArray.GenArray.t ->
        int -> 'a GenArray.GenArray.t -> int -> int -> unit
      val fold_lefti :
        (int -> 'b -> 'a -> 'b) -> 'b -> 'a GenArray.GenArray.t -> 'b
      val fold_righti :
        (int -> 'a -> 'b -> 'b) -> 'a GenArray.GenArray.t -> 'b -> 'b
      val map :
        ('a -> 'b) -> 'a GenArray.GenArray.t -> 'b GenArray.GenArray.t
      val print :
        ?trailing:(Format.formatter -> unit) ->
        (Format.formatter -> unit) ->
        (int -> Format.formatter -> 'a -> unit) ->
        Format.formatter -> 'a GenArray.GenArray.t -> unit
    end
end