sig
  val names : string list
  val open_flags :
    ([< `Read | `Set_and_create ], Reader0.Internal.t,
     Reader0.Internal.open_flags Import.Deferred.t)
    Fieldslib.Field.t_with_perm
  val last_read_time :
    ([< `Read | `Set_and_create ], Reader0.Internal.t, Core.Std.Time.t)
    Fieldslib.Field.t_with_perm
  val close_finished :
    ([< `Read | `Set_and_create ], Reader0.Internal.t, unit Import.Ivar.t)
    Fieldslib.Field.t_with_perm
  val state :
    ([< `Read | `Set_and_create ], Reader0.Internal.t,
     Reader0.Internal.State.t)
    Fieldslib.Field.t_with_perm
  val bin_prot_buf :
    ([< `Read | `Set_and_create ], Reader0.Internal.t,
     Core.Std.Bigstring.t Core.Std.sexp_opaque)
    Fieldslib.Field.t_with_perm
  val bin_prot_len_buf :
    ([< `Read | `Set_and_create ], Reader0.Internal.t,
     Core.Std.Bigstring.t Core.Std.sexp_opaque)
    Fieldslib.Field.t_with_perm
  val available :
    ([< `Read | `Set_and_create ], Reader0.Internal.t, int)
    Fieldslib.Field.t_with_perm
  val pos :
    ([< `Read | `Set_and_create ], Reader0.Internal.t, int)
    Fieldslib.Field.t_with_perm
  val close_may_destroy_buf :
    ([< `Read | `Set_and_create ], Reader0.Internal.t,
     [ `Not_ever | `Not_now | `Yes ])
    Fieldslib.Field.t_with_perm
  val buf :
    ([< `Read | `Set_and_create ], Reader0.Internal.t,
     Core.Std.Bigstring.t Core.Std.sexp_opaque)
    Fieldslib.Field.t_with_perm
  val id :
    ([< `Read | `Set_and_create ], Reader0.Internal.t, Reader0.Id.t)
    Fieldslib.Field.t_with_perm
  val fd :
    ([< `Read | `Set_and_create ], Reader0.Internal.t, Fd.t)
    Fieldslib.Field.t_with_perm
  val make_creator :
    fd:(([< `Read | `Set_and_create ], Reader0.Internal.t, Fd.t)
        Fieldslib.Field.t_with_perm -> '-> ('-> Fd.t) * 'c) ->
    id:(([< `Read | `Set_and_create ], Reader0.Internal.t, Reader0.Id.t)
        Fieldslib.Field.t_with_perm -> '-> ('-> Reader0.Id.t) * 'd) ->
    buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
          Core.Std.Bigstring.t Core.Std.sexp_opaque)
         Fieldslib.Field.t_with_perm ->
         '-> ('-> Core.Std.Bigstring.t Core.Std.sexp_opaque) * 'e) ->
    close_may_destroy_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                            [ `Not_ever | `Not_now | `Yes ])
                           Fieldslib.Field.t_with_perm ->
                           '-> ('-> [ `Not_ever | `Not_now | `Yes ]) * 'f) ->
    pos:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
         Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'g) ->
    available:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
               Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'h) ->
    bin_prot_len_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                       Core.Std.Bigstring.t Core.Std.sexp_opaque)
                      Fieldslib.Field.t_with_perm ->
                      '->
                      ('-> Core.Std.Bigstring.t Core.Std.sexp_opaque) * 'i) ->
    bin_prot_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                   Core.Std.Bigstring.t Core.Std.sexp_opaque)
                  Fieldslib.Field.t_with_perm ->
                  '->
                  ('-> Core.Std.Bigstring.t Core.Std.sexp_opaque) * 'j) ->
    state:(([< `Read | `Set_and_create ], Reader0.Internal.t,
            Reader0.Internal.State.t)
           Fieldslib.Field.t_with_perm ->
           '-> ('-> Reader0.Internal.State.t) * 'k) ->
    close_finished:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm ->
                    '-> ('-> unit Import.Ivar.t) * 'l) ->
    last_read_time:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     Core.Std.Time.t)
                    Fieldslib.Field.t_with_perm ->
                    '-> ('-> Core.Std.Time.t) * 'm) ->
    open_flags:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                 Reader0.Internal.open_flags Import.Deferred.t)
                Fieldslib.Field.t_with_perm ->
                '->
                ('-> Reader0.Internal.open_flags Import.Deferred.t) * 'n) ->
    '-> ('-> Reader0.Internal.t) * 'n
  val create :
    fd:Fd.t ->
    id:Reader0.Id.t ->
    buf:Core.Std.Bigstring.t Core.Std.sexp_opaque ->
    close_may_destroy_buf:[ `Not_ever | `Not_now | `Yes ] ->
    pos:int ->
    available:int ->
    bin_prot_len_buf:Core.Std.Bigstring.t Core.Std.sexp_opaque ->
    bin_prot_buf:Core.Std.Bigstring.t Core.Std.sexp_opaque ->
    state:Reader0.Internal.State.t ->
    close_finished:unit Import.Ivar.t ->
    last_read_time:Core.Std.Time.t ->
    open_flags:Reader0.Internal.open_flags Import.Deferred.t ->
    Reader0.Internal.t
  val map :
    fd:(([< `Read | `Set_and_create ], Reader0.Internal.t, Fd.t)
        Fieldslib.Field.t_with_perm -> Fd.t) ->
    id:(([< `Read | `Set_and_create ], Reader0.Internal.t, Reader0.Id.t)
        Fieldslib.Field.t_with_perm -> Reader0.Id.t) ->
    buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
          Core.Std.Bigstring.t Core.Std.sexp_opaque)
         Fieldslib.Field.t_with_perm ->
         Core.Std.Bigstring.t Core.Std.sexp_opaque) ->
    close_may_destroy_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                            [ `Not_ever | `Not_now | `Yes ])
                           Fieldslib.Field.t_with_perm ->
                           [ `Not_ever | `Not_now | `Yes ]) ->
    pos:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
         Fieldslib.Field.t_with_perm -> int) ->
    available:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
               Fieldslib.Field.t_with_perm -> int) ->
    bin_prot_len_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                       Core.Std.Bigstring.t Core.Std.sexp_opaque)
                      Fieldslib.Field.t_with_perm ->
                      Core.Std.Bigstring.t Core.Std.sexp_opaque) ->
    bin_prot_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                   Core.Std.Bigstring.t Core.Std.sexp_opaque)
                  Fieldslib.Field.t_with_perm ->
                  Core.Std.Bigstring.t Core.Std.sexp_opaque) ->
    state:(([< `Read | `Set_and_create ], Reader0.Internal.t,
            Reader0.Internal.State.t)
           Fieldslib.Field.t_with_perm -> Reader0.Internal.State.t) ->
    close_finished:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm -> unit Import.Ivar.t) ->
    last_read_time:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     Core.Std.Time.t)
                    Fieldslib.Field.t_with_perm -> Core.Std.Time.t) ->
    open_flags:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                 Reader0.Internal.open_flags Import.Deferred.t)
                Fieldslib.Field.t_with_perm ->
                Reader0.Internal.open_flags Import.Deferred.t) ->
    Reader0.Internal.t
  val iter :
    fd:(([< `Read | `Set_and_create ], Reader0.Internal.t, Fd.t)
        Fieldslib.Field.t_with_perm -> 'a) ->
    id:(([< `Read | `Set_and_create ], Reader0.Internal.t, Reader0.Id.t)
        Fieldslib.Field.t_with_perm -> 'b) ->
    buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
          Core.Std.Bigstring.t Core.Std.sexp_opaque)
         Fieldslib.Field.t_with_perm -> 'c) ->
    close_may_destroy_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                            [ `Not_ever | `Not_now | `Yes ])
                           Fieldslib.Field.t_with_perm -> 'd) ->
    pos:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
         Fieldslib.Field.t_with_perm -> 'e) ->
    available:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
               Fieldslib.Field.t_with_perm -> '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 -> 'g) ->
    bin_prot_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                   Core.Std.Bigstring.t Core.Std.sexp_opaque)
                  Fieldslib.Field.t_with_perm -> 'h) ->
    state:(([< `Read | `Set_and_create ], Reader0.Internal.t,
            Reader0.Internal.State.t)
           Fieldslib.Field.t_with_perm -> 'i) ->
    close_finished:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm -> 'j) ->
    last_read_time:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     Core.Std.Time.t)
                    Fieldslib.Field.t_with_perm -> 'k) ->
    open_flags:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                 Reader0.Internal.open_flags Import.Deferred.t)
                Fieldslib.Field.t_with_perm -> 'l) ->
    'l
  val fold :
    init:'->
    fd:('->
        ([< `Read | `Set_and_create ], Reader0.Internal.t, Fd.t)
        Fieldslib.Field.t_with_perm -> 'b) ->
    id:('->
        ([< `Read | `Set_and_create ], Reader0.Internal.t, Reader0.Id.t)
        Fieldslib.Field.t_with_perm -> 'c) ->
    buf:('->
         ([< `Read | `Set_and_create ], Reader0.Internal.t,
          Core.Std.Bigstring.t Core.Std.sexp_opaque)
         Fieldslib.Field.t_with_perm -> 'd) ->
    close_may_destroy_buf:('->
                           ([< `Read | `Set_and_create ], Reader0.Internal.t,
                            [ `Not_ever | `Not_now | `Yes ])
                           Fieldslib.Field.t_with_perm -> 'e) ->
    pos:('->
         ([< `Read | `Set_and_create ], Reader0.Internal.t, int)
         Fieldslib.Field.t_with_perm -> 'f) ->
    available:('->
               ([< `Read | `Set_and_create ], Reader0.Internal.t, int)
               Fieldslib.Field.t_with_perm -> '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 -> 'h) ->
    bin_prot_buf:('->
                  ([< `Read | `Set_and_create ], Reader0.Internal.t,
                   Core.Std.Bigstring.t Core.Std.sexp_opaque)
                  Fieldslib.Field.t_with_perm -> 'i) ->
    state:('->
           ([< `Read | `Set_and_create ], Reader0.Internal.t,
            Reader0.Internal.State.t)
           Fieldslib.Field.t_with_perm -> 'j) ->
    close_finished:('->
                    ([< `Read | `Set_and_create ], Reader0.Internal.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm -> 'k) ->
    last_read_time:('->
                    ([< `Read | `Set_and_create ], Reader0.Internal.t,
                     Core.Std.Time.t)
                    Fieldslib.Field.t_with_perm -> 'l) ->
    open_flags:('->
                ([< `Read | `Set_and_create ], Reader0.Internal.t,
                 Reader0.Internal.open_flags Import.Deferred.t)
                Fieldslib.Field.t_with_perm -> 'm) ->
    'm
  val map_poly :
    ([< `Read | `Set_and_create ], Reader0.Internal.t, 'a)
    Fieldslib.Field.user -> 'a list
  val for_all :
    fd:(([< `Read | `Set_and_create ], Reader0.Internal.t, Fd.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    id:(([< `Read | `Set_and_create ], Reader0.Internal.t, Reader0.Id.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
          Core.Std.Bigstring.t Core.Std.sexp_opaque)
         Fieldslib.Field.t_with_perm -> bool) ->
    close_may_destroy_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                            [ `Not_ever | `Not_now | `Yes ])
                           Fieldslib.Field.t_with_perm -> bool) ->
    pos:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
         Fieldslib.Field.t_with_perm -> bool) ->
    available:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
               Fieldslib.Field.t_with_perm -> bool) ->
    bin_prot_len_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                       Core.Std.Bigstring.t Core.Std.sexp_opaque)
                      Fieldslib.Field.t_with_perm -> bool) ->
    bin_prot_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                   Core.Std.Bigstring.t Core.Std.sexp_opaque)
                  Fieldslib.Field.t_with_perm -> bool) ->
    state:(([< `Read | `Set_and_create ], Reader0.Internal.t,
            Reader0.Internal.State.t)
           Fieldslib.Field.t_with_perm -> bool) ->
    close_finished:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
    last_read_time:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     Core.Std.Time.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
    open_flags:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                 Reader0.Internal.open_flags Import.Deferred.t)
                Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val exists :
    fd:(([< `Read | `Set_and_create ], Reader0.Internal.t, Fd.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    id:(([< `Read | `Set_and_create ], Reader0.Internal.t, Reader0.Id.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
          Core.Std.Bigstring.t Core.Std.sexp_opaque)
         Fieldslib.Field.t_with_perm -> bool) ->
    close_may_destroy_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                            [ `Not_ever | `Not_now | `Yes ])
                           Fieldslib.Field.t_with_perm -> bool) ->
    pos:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
         Fieldslib.Field.t_with_perm -> bool) ->
    available:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
               Fieldslib.Field.t_with_perm -> bool) ->
    bin_prot_len_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                       Core.Std.Bigstring.t Core.Std.sexp_opaque)
                      Fieldslib.Field.t_with_perm -> bool) ->
    bin_prot_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                   Core.Std.Bigstring.t Core.Std.sexp_opaque)
                  Fieldslib.Field.t_with_perm -> bool) ->
    state:(([< `Read | `Set_and_create ], Reader0.Internal.t,
            Reader0.Internal.State.t)
           Fieldslib.Field.t_with_perm -> bool) ->
    close_finished:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
    last_read_time:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     Core.Std.Time.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
    open_flags:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                 Reader0.Internal.open_flags Import.Deferred.t)
                Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val to_list :
    fd:(([< `Read | `Set_and_create ], Reader0.Internal.t, Fd.t)
        Fieldslib.Field.t_with_perm -> 'a) ->
    id:(([< `Read | `Set_and_create ], Reader0.Internal.t, Reader0.Id.t)
        Fieldslib.Field.t_with_perm -> 'a) ->
    buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
          Core.Std.Bigstring.t Core.Std.sexp_opaque)
         Fieldslib.Field.t_with_perm -> 'a) ->
    close_may_destroy_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                            [ `Not_ever | `Not_now | `Yes ])
                           Fieldslib.Field.t_with_perm -> 'a) ->
    pos:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
         Fieldslib.Field.t_with_perm -> 'a) ->
    available:(([< `Read | `Set_and_create ], Reader0.Internal.t, int)
               Fieldslib.Field.t_with_perm -> 'a) ->
    bin_prot_len_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                       Core.Std.Bigstring.t Core.Std.sexp_opaque)
                      Fieldslib.Field.t_with_perm -> 'a) ->
    bin_prot_buf:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                   Core.Std.Bigstring.t Core.Std.sexp_opaque)
                  Fieldslib.Field.t_with_perm -> 'a) ->
    state:(([< `Read | `Set_and_create ], Reader0.Internal.t,
            Reader0.Internal.State.t)
           Fieldslib.Field.t_with_perm -> 'a) ->
    close_finished:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm -> 'a) ->
    last_read_time:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                     Core.Std.Time.t)
                    Fieldslib.Field.t_with_perm -> 'a) ->
    open_flags:(([< `Read | `Set_and_create ], Reader0.Internal.t,
                 Reader0.Internal.open_flags Import.Deferred.t)
                Fieldslib.Field.t_with_perm -> 'a) ->
    'a list
  module Direct :
    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
end