sig   type input   type 'a output   exception No_more_input   exception Input_closed   exception Output_closed   val read : BatInnerIO.input -> char   val read_all : BatInnerIO.input -> string   val pipe : unit -> BatInnerIO.input * unit BatInnerIO.output   val nread : BatInnerIO.input -> int -> string   val really_nread : BatInnerIO.input -> int -> string   val input : BatInnerIO.input -> string -> int -> int -> int   val really_input : BatInnerIO.input -> string -> int -> int -> int   val close_in : BatInnerIO.input -> unit   val write : 'BatInnerIO.output -> char -> unit   val nwrite : 'BatInnerIO.output -> string -> unit   val output : 'BatInnerIO.output -> string -> int -> int -> int   val really_output : 'BatInnerIO.output -> string -> int -> int -> int   val flush : 'BatInnerIO.output -> unit   val flush_all : unit -> unit   val close_out : 'BatInnerIO.output -> 'a   val close_all : unit -> unit   val input_string : string -> BatInnerIO.input   val output_string : unit -> string BatInnerIO.output   val on_close_out :     'BatInnerIO.output -> ('BatInnerIO.output -> unit) -> unit   val create_in :     read:(unit -> char) ->     input:(string -> int -> int -> int) ->     close:(unit -> unit) -> BatInnerIO.input   val inherit_in :     ?read:(unit -> char) ->     ?input:(string -> int -> int -> int) ->     ?close:(unit -> unit) -> BatInnerIO.input -> BatInnerIO.input   val wrap_in :     read:(unit -> char) ->     input:(string -> int -> int -> int) ->     close:(unit -> unit) ->     underlying:BatInnerIO.input list -> BatInnerIO.input   val create_out :     write:(char -> unit) ->     output:(string -> int -> int -> int) ->     flush:(unit -> unit) -> close:(unit -> 'a) -> 'BatInnerIO.output   val inherit_out :     ?write:(char -> unit) ->     ?output:(string -> int -> int -> int) ->     ?flush:(unit -> unit) ->     ?close:(unit -> unit) -> 'BatInnerIO.output -> unit BatInnerIO.output   val wrap_out :     write:(char -> unit) ->     output:(string -> int -> int -> int) ->     flush:(unit -> unit) ->     close:(unit -> 'a) ->     underlying:'BatInnerIO.output list -> 'BatInnerIO.output   val default_buffer_size : int   exception Overflow of string   val read_byte : BatInnerIO.input -> int   val read_signed_byte : BatInnerIO.input -> int   val read_ui16 : BatInnerIO.input -> int   val read_i16 : BatInnerIO.input -> int   val read_i32 : BatInnerIO.input -> int   val read_real_i32 : BatInnerIO.input -> int32   val read_i64 : BatInnerIO.input -> int64   val read_float : BatInnerIO.input -> float   val read_double : BatInnerIO.input -> float   val read_string : BatInnerIO.input -> string   val read_line : BatInnerIO.input -> string   val write_byte : 'BatInnerIO.output -> int -> unit   val write_ui16 : 'BatInnerIO.output -> int -> unit   val write_i16 : 'BatInnerIO.output -> int -> unit   val write_i32 : 'BatInnerIO.output -> int -> unit   val write_real_i32 : 'BatInnerIO.output -> int32 -> unit   val write_i64 : 'BatInnerIO.output -> int64 -> unit   val write_double : 'BatInnerIO.output -> float -> unit   val write_float : 'BatInnerIO.output -> float -> unit   val write_string : 'BatInnerIO.output -> string -> unit   val write_line : 'BatInnerIO.output -> string -> unit   external cast_output : 'BatInnerIO.output -> unit BatInnerIO.output     = "%identity"   val input_channel :     ?autoclose:bool ->     ?cleanup:bool -> Pervasives.in_channel -> BatInnerIO.input   val output_channel :     ?cleanup:bool -> Pervasives.out_channel -> unit BatInnerIO.output   val stdin : BatInnerIO.input   val stdout : unit BatInnerIO.output   val stderr : unit BatInnerIO.output   val stdnull : unit BatInnerIO.output   module Input :     sig       type t = BatInnerIO.input       val compare : BatInnerIO.input -> BatInnerIO.input -> int       val hash : BatInnerIO.input -> int       val equal : BatInnerIO.input -> BatInnerIO.input -> bool     end   module Output :     sig       type t = unit BatInnerIO.output       val compare : 'BatInnerIO.output -> 'BatInnerIO.output -> int       val hash : 'BatInnerIO.output -> int       val equal : 'BatInnerIO.output -> 'BatInnerIO.output -> bool     end   external noop : unit -> unit = "%ignore"   val get_output : 'BatInnerIO.output -> string -> int -> int -> int   val get_flush : 'BatInnerIO.output -> unit -> unit   val lock : BatConcurrent.lock Pervasives.ref   val get_output_id : 'BatInnerIO.output -> int   val get_input_id : BatInnerIO.input -> int end