sig
  module DynArray :
    sig
      type 'a t
      val create : unit -> 'JLib.DynArray.t
      val length : 'JLib.DynArray.t -> int
      val index_of : ('-> bool) -> 'JLib.DynArray.t -> int
      val add : 'JLib.DynArray.t -> '-> unit
      val unsafe_get : 'JLib.DynArray.t -> int -> 'a
      val of_array : 'a array -> 'JLib.DynArray.t
      val to_array : 'JLib.DynArray.t -> 'a array
      val of_list : 'a list -> 'JLib.DynArray.t
      val to_list : 'JLib.DynArray.t -> 'a list
      val iter : ('-> unit) -> 'JLib.DynArray.t -> unit
    end
  module IO :
    sig
      type input
      type 'a output
      exception Overflow of string
      val input_channel : Stdlib.in_channel -> JLib.IO.input
      val output_channel : Stdlib.out_channel -> unit JLib.IO.output
      val input_string : string -> JLib.IO.input
      val flush : 'JLib.IO.output -> unit
      val read_byte : JLib.IO.input -> int
      val read_signed_byte : JLib.IO.input -> int
      val really_nread : JLib.IO.input -> int -> Stdlib.Bytes.t
      val really_nread_string : JLib.IO.input -> int -> string
      val write_byte : 'JLib.IO.output -> int -> unit
      val nwrite_string : 'JLib.IO.output -> string -> unit
      val output_string : unit -> string JLib.IO.output
      val close_out : 'JLib.IO.output -> 'a
      val close_in : JLib.IO.input -> unit
      val printf :
        'JLib.IO.output -> ('b, unit, string, unit) Stdlib.format4 -> 'b
      val write : 'JLib.IO.output -> char -> unit
      val pos_in : JLib.IO.input -> JLib.IO.input * (unit -> int)
      val pos_out : 'JLib.IO.output -> 'JLib.IO.output * (unit -> int)
      val input_bytes : Stdlib.Bytes.t -> JLib.IO.input
      module BigEndian :
        sig
          val read_ui16 : JLib.IO.input -> int
          val read_i16 : JLib.IO.input -> int
          val read_i32 : JLib.IO.input -> int
          val read_real_i32 : JLib.IO.input -> int32
          val read_i64 : JLib.IO.input -> int64
          val read_double : JLib.IO.input -> float
          val write_ui16 : 'JLib.IO.output -> int -> unit
          val write_i16 : 'JLib.IO.output -> int -> unit
          val write_i32 : 'JLib.IO.output -> int -> unit
          val write_real_i32 : 'JLib.IO.output -> int32 -> unit
          val write_i64 : 'JLib.IO.output -> int64 -> unit
          val write_double : 'JLib.IO.output -> float -> unit
        end
    end
  module String :
    sig
      val nsplit : string -> string -> string list
      val length : string -> int
      val strip : ?chars:string -> string -> string
    end
  module Option :
    sig
      val may : ('-> unit) -> 'a option -> unit
      val map_default : ('-> 'b) -> '-> 'a option -> 'b
    end
  module Array :
    sig
      val length : 'a array -> int
      val get : 'a array -> int -> 'a
      val findi : ('-> bool) -> 'a array -> int
    end
  module List :
    sig
      val length : 'a list -> int
      val init : int -> (int -> 'a) -> 'a list
      val iter : ('-> unit) -> 'a list -> unit
      val drop : int -> 'a list -> 'a list
      val filter_map : ('-> 'b option) -> 'a list -> 'b list
      val remove_all : 'a list -> '-> 'a list
      val split_nth : int -> 'a list -> 'a list * 'a list
      val map : ('-> 'b) -> 'a list -> 'b list
      val map2 : ('-> '-> 'c) -> 'a list -> 'b list -> 'c list
      val fold_left : ('-> '-> 'a) -> '-> 'b list -> 'a
      val iteri : (int -> '-> unit) -> 'a list -> unit
    end
end