sig
  val iter :
    Reader0.Internal.t ->
    fd:(([< `Read | `Set_and_create ], Reader0.Internal.t, Fd.t)
        Fieldslib.Field.t_with_perm -> Reader0.Internal.t -> Fd.t -> 'a) ->
    id:(([< `Read | `Set_and_create ], Reader0.Internal.t, Reader0.Id.t)
        Fieldslib.Field.t_with_perm ->
        Reader0.Internal.t -> Reader0.Id.t -> 'b) ->
    buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
          Core.Std.Bigstring.t Core.Std.sexp_opaque)
         Fieldslib.Field.t_with_perm ->
         Reader0.Internal.t ->
         Core.Std.Bigstring.t Core.Std.sexp_opaque -> 'c) ->
    close_may_destroy_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                            [ `Not_ever | `Not_now | `Yes ])
                           Fieldslib.Field.t_with_perm ->
                           Reader0.Internal.t ->
                           [ `Not_ever | `Not_now | `Yes ] -> 'd) ->
    pos:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
         Fieldslib.Field.t_with_perm -> Reader0.Internal.t -> int -> 'e) ->
    available:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
               Fieldslib.Field.t_with_perm -> Reader0.Internal.t -> int -> 'f) ->
    bin_prot_len_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                       Core.Std.Bigstring.t Core.Std.sexp_opaque)
                      Fieldslib.Field.t_with_perm ->
                      Reader0.Internal.t ->
                      Core.Std.Bigstring.t Core.Std.sexp_opaque -> 'g) ->
    bin_prot_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                   Core.Std.Bigstring.t Core.Std.sexp_opaque)
                  Fieldslib.Field.t_with_perm ->
                  Reader0.Internal.t ->
                  Core.Std.Bigstring.t Core.Std.sexp_opaque -> 'h) ->
    state:(([< `Read | `Set_and_create ], Reader0.Internal.t,
            Reader0.Internal.State.t)
           Fieldslib.Field.t_with_perm ->
           Reader0.Internal.t -> Reader0.Internal.State.t -> 'i) ->
    close_finished:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm ->
                    Reader0.Internal.t -> unit Import.Ivar.t -> 'j) ->
    last_read_time:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     Core.Std.Time.t)
                    Fieldslib.Field.t_with_perm ->
                    Reader0.Internal.t -> Core.Std.Time.t -> 'k) ->
    open_flags:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                 Reader0.Internal.open_flags Import.Deferred.t)
                Fieldslib.Field.t_with_perm ->
                Reader0.Internal.t ->
                Reader0.Internal.open_flags Import.Deferred.t -> 'l) ->
    'l
  val fold :
    Reader0.Internal.t ->
    init:'->
    fd:('->
        ([< `Read | `Set_and_create ], Reader0.Internal.t, Fd.t)
        Fieldslib.Field.t_with_perm -> Reader0.Internal.t -> Fd.t -> 'b) ->
    id:('->
        ([< `Read | `Set_and_create ], Reader0.Internal.t, Reader0.Id.t)
        Fieldslib.Field.t_with_perm ->
        Reader0.Internal.t -> Reader0.Id.t -> 'c) ->
    buf:('->
         ([< `Read | `Set_and_create ], Reader0.Internal.t,
          Core.Std.Bigstring.t Core.Std.sexp_opaque)
         Fieldslib.Field.t_with_perm ->
         Reader0.Internal.t ->
         Core.Std.Bigstring.t Core.Std.sexp_opaque -> 'd) ->
    close_may_destroy_buf:('->
                           ([< `Read | `Set_and_create ], Reader0.Internal.t,
                            [ `Not_ever | `Not_now | `Yes ])
                           Fieldslib.Field.t_with_perm ->
                           Reader0.Internal.t ->
                           [ `Not_ever | `Not_now | `Yes ] -> 'e) ->
    pos:('->
         ([< `Read | `Set_and_create ], Reader0.Internal.t, int)
         Fieldslib.Field.t_with_perm -> Reader0.Internal.t -> int -> 'f) ->
    available:('->
               ([< `Read | `Set_and_create ], Reader0.Internal.t, int)
               Fieldslib.Field.t_with_perm -> Reader0.Internal.t -> int -> 'g) ->
    bin_prot_len_buf:('->
                      ([< `Read | `Set_and_create ], Reader0.Internal.t,
                       Core.Std.Bigstring.t Core.Std.sexp_opaque)
                      Fieldslib.Field.t_with_perm ->
                      Reader0.Internal.t ->
                      Core.Std.Bigstring.t Core.Std.sexp_opaque -> 'h) ->
    bin_prot_buf:('->
                  ([< `Read | `Set_and_create ], Reader0.Internal.t,
                   Core.Std.Bigstring.t Core.Std.sexp_opaque)
                  Fieldslib.Field.t_with_perm ->
                  Reader0.Internal.t ->
                  Core.Std.Bigstring.t Core.Std.sexp_opaque -> 'i) ->
    state:('->
           ([< `Read | `Set_and_create ], Reader0.Internal.t,
            Reader0.Internal.State.t)
           Fieldslib.Field.t_with_perm ->
           Reader0.Internal.t -> Reader0.Internal.State.t -> 'j) ->
    close_finished:('->
                    ([< `Read | `Set_and_create ], Reader0.Internal.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm ->
                    Reader0.Internal.t -> unit Import.Ivar.t -> 'k) ->
    last_read_time:('->
                    ([< `Read | `Set_and_create ], Reader0.Internal.t,
                     Core.Std.Time.t)
                    Fieldslib.Field.t_with_perm ->
                    Reader0.Internal.t -> Core.Std.Time.t -> 'l) ->
    open_flags:('->
                ([< `Read | `Set_and_create ], Reader0.Internal.t,
                 Reader0.Internal.open_flags Import.Deferred.t)
                Fieldslib.Field.t_with_perm ->
                Reader0.Internal.t ->
                Reader0.Internal.open_flags Import.Deferred.t -> 'm) ->
    'm
end