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