sig
  val names : string list
  val close_finished :
    ([< `Read | `Set_and_create ], Raw_fd.T.t, unit Import.Ivar.t)
    Fieldslib.Field.t_with_perm
  val num_active_syscalls :
    ([< `Read | `Set_and_create ], Raw_fd.T.t, int)
    Fieldslib.Field.t_with_perm
  val watching_has_changed :
    ([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
    Fieldslib.Field.t_with_perm
  val watching :
    ([< `Read | `Set_and_create ], Raw_fd.T.t,
     Raw_fd.Watching.t Read_write.Mutable.t)
    Fieldslib.Field.t_with_perm
  val state :
    ([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.State.t)
    Fieldslib.Field.t_with_perm
  val have_set_nonblock :
    ([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
    Fieldslib.Field.t_with_perm
  val supports_nonblock :
    ([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
    Fieldslib.Field.t_with_perm
  val kind :
    ([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.Kind.t)
    Fieldslib.Field.t_with_perm
  val info :
    ([< `Read | `Set_and_create ], Raw_fd.T.t, Core.Std.Info.t)
    Fieldslib.Field.t_with_perm
  val file_descr :
    ([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.File_descr.t)
    Fieldslib.Field.t_with_perm
  val make_creator :
    file_descr:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                 Raw_fd.File_descr.t)
                Fieldslib.Field.t_with_perm ->
                '-> ('-> Raw_fd.File_descr.t) * 'c) ->
    info:(([< `Read | `Set_and_create ], Raw_fd.T.t, Core.Std.Info.t)
          Fieldslib.Field.t_with_perm -> '-> ('-> Core.Std.Info.t) * 'd) ->
    kind:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.Kind.t)
          Fieldslib.Field.t_with_perm -> '-> ('-> Raw_fd.Kind.t) * 'e) ->
    supports_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> '-> ('-> bool) * 'f) ->
    have_set_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> '-> ('-> bool) * 'g) ->
    state:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.State.t)
           Fieldslib.Field.t_with_perm -> '-> ('-> Raw_fd.State.t) * 'h) ->
    watching:(([< `Read | `Set_and_create ], Raw_fd.T.t,
               Raw_fd.Watching.t Read_write.Mutable.t)
              Fieldslib.Field.t_with_perm ->
              '-> ('-> Raw_fd.Watching.t Read_write.Mutable.t) * 'i) ->
    watching_has_changed:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                          Fieldslib.Field.t_with_perm ->
                          '-> ('-> bool) * 'j) ->
    num_active_syscalls:(([< `Read | `Set_and_create ], Raw_fd.T.t, int)
                         Fieldslib.Field.t_with_perm ->
                         '-> ('-> int) * 'k) ->
    close_finished:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm ->
                    '-> ('-> unit Import.Ivar.t) * 'l) ->
    '-> ('-> Raw_fd.T.t) * 'l
  val create :
    file_descr:Raw_fd.File_descr.t ->
    info:Core.Std.Info.t ->
    kind:Raw_fd.Kind.t ->
    supports_nonblock:bool ->
    have_set_nonblock:bool ->
    state:Raw_fd.State.t ->
    watching:Raw_fd.Watching.t Read_write.Mutable.t ->
    watching_has_changed:bool ->
    num_active_syscalls:int ->
    close_finished:unit Import.Ivar.t -> Raw_fd.T.t
  val map :
    file_descr:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                 Raw_fd.File_descr.t)
                Fieldslib.Field.t_with_perm -> Raw_fd.File_descr.t) ->
    info:(([< `Read | `Set_and_create ], Raw_fd.T.t, Core.Std.Info.t)
          Fieldslib.Field.t_with_perm -> Core.Std.Info.t) ->
    kind:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.Kind.t)
          Fieldslib.Field.t_with_perm -> Raw_fd.Kind.t) ->
    supports_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> bool) ->
    have_set_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> bool) ->
    state:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.State.t)
           Fieldslib.Field.t_with_perm -> Raw_fd.State.t) ->
    watching:(([< `Read | `Set_and_create ], Raw_fd.T.t,
               Raw_fd.Watching.t Read_write.Mutable.t)
              Fieldslib.Field.t_with_perm ->
              Raw_fd.Watching.t Read_write.Mutable.t) ->
    watching_has_changed:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                          Fieldslib.Field.t_with_perm -> bool) ->
    num_active_syscalls:(([< `Read | `Set_and_create ], Raw_fd.T.t, int)
                         Fieldslib.Field.t_with_perm -> int) ->
    close_finished:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm -> unit Import.Ivar.t) ->
    Raw_fd.T.t
  val iter :
    file_descr:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                 Raw_fd.File_descr.t)
                Fieldslib.Field.t_with_perm -> 'a) ->
    info:(([< `Read | `Set_and_create ], Raw_fd.T.t, Core.Std.Info.t)
          Fieldslib.Field.t_with_perm -> 'b) ->
    kind:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.Kind.t)
          Fieldslib.Field.t_with_perm -> 'c) ->
    supports_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> 'd) ->
    have_set_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> 'e) ->
    state:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.State.t)
           Fieldslib.Field.t_with_perm -> 'f) ->
    watching:(([< `Read | `Set_and_create ], Raw_fd.T.t,
               Raw_fd.Watching.t Read_write.Mutable.t)
              Fieldslib.Field.t_with_perm -> 'g) ->
    watching_has_changed:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                          Fieldslib.Field.t_with_perm -> 'h) ->
    num_active_syscalls:(([< `Read | `Set_and_create ], Raw_fd.T.t, int)
                         Fieldslib.Field.t_with_perm -> 'i) ->
    close_finished:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm -> 'j) ->
    'j
  val fold :
    init:'->
    file_descr:('->
                ([< `Read | `Set_and_create ], Raw_fd.T.t,
                 Raw_fd.File_descr.t)
                Fieldslib.Field.t_with_perm -> 'b) ->
    info:('->
          ([< `Read | `Set_and_create ], Raw_fd.T.t, Core.Std.Info.t)
          Fieldslib.Field.t_with_perm -> 'c) ->
    kind:('->
          ([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.Kind.t)
          Fieldslib.Field.t_with_perm -> 'd) ->
    supports_nonblock:('->
                       ([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> 'e) ->
    have_set_nonblock:('->
                       ([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> 'f) ->
    state:('->
           ([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.State.t)
           Fieldslib.Field.t_with_perm -> 'g) ->
    watching:('->
              ([< `Read | `Set_and_create ], Raw_fd.T.t,
               Raw_fd.Watching.t Read_write.Mutable.t)
              Fieldslib.Field.t_with_perm -> 'h) ->
    watching_has_changed:('->
                          ([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                          Fieldslib.Field.t_with_perm -> 'i) ->
    num_active_syscalls:('->
                         ([< `Read | `Set_and_create ], Raw_fd.T.t, int)
                         Fieldslib.Field.t_with_perm -> 'j) ->
    close_finished:('->
                    ([< `Read | `Set_and_create ], Raw_fd.T.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm -> 'k) ->
    'k
  val map_poly :
    ([< `Read | `Set_and_create ], Raw_fd.T.t, 'a) Fieldslib.Field.user ->
    'a list
  val for_all :
    file_descr:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                 Raw_fd.File_descr.t)
                Fieldslib.Field.t_with_perm -> bool) ->
    info:(([< `Read | `Set_and_create ], Raw_fd.T.t, Core.Std.Info.t)
          Fieldslib.Field.t_with_perm -> bool) ->
    kind:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.Kind.t)
          Fieldslib.Field.t_with_perm -> bool) ->
    supports_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> bool) ->
    have_set_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> bool) ->
    state:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.State.t)
           Fieldslib.Field.t_with_perm -> bool) ->
    watching:(([< `Read | `Set_and_create ], Raw_fd.T.t,
               Raw_fd.Watching.t Read_write.Mutable.t)
              Fieldslib.Field.t_with_perm -> bool) ->
    watching_has_changed:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                          Fieldslib.Field.t_with_perm -> bool) ->
    num_active_syscalls:(([< `Read | `Set_and_create ], Raw_fd.T.t, int)
                         Fieldslib.Field.t_with_perm -> bool) ->
    close_finished:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val exists :
    file_descr:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                 Raw_fd.File_descr.t)
                Fieldslib.Field.t_with_perm -> bool) ->
    info:(([< `Read | `Set_and_create ], Raw_fd.T.t, Core.Std.Info.t)
          Fieldslib.Field.t_with_perm -> bool) ->
    kind:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.Kind.t)
          Fieldslib.Field.t_with_perm -> bool) ->
    supports_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> bool) ->
    have_set_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> bool) ->
    state:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.State.t)
           Fieldslib.Field.t_with_perm -> bool) ->
    watching:(([< `Read | `Set_and_create ], Raw_fd.T.t,
               Raw_fd.Watching.t Read_write.Mutable.t)
              Fieldslib.Field.t_with_perm -> bool) ->
    watching_has_changed:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                          Fieldslib.Field.t_with_perm -> bool) ->
    num_active_syscalls:(([< `Read | `Set_and_create ], Raw_fd.T.t, int)
                         Fieldslib.Field.t_with_perm -> bool) ->
    close_finished:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val to_list :
    file_descr:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                 Raw_fd.File_descr.t)
                Fieldslib.Field.t_with_perm -> 'a) ->
    info:(([< `Read | `Set_and_create ], Raw_fd.T.t, Core.Std.Info.t)
          Fieldslib.Field.t_with_perm -> 'a) ->
    kind:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.Kind.t)
          Fieldslib.Field.t_with_perm -> 'a) ->
    supports_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> 'a) ->
    have_set_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                       Fieldslib.Field.t_with_perm -> 'a) ->
    state:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.State.t)
           Fieldslib.Field.t_with_perm -> 'a) ->
    watching:(([< `Read | `Set_and_create ], Raw_fd.T.t,
               Raw_fd.Watching.t Read_write.Mutable.t)
              Fieldslib.Field.t_with_perm -> 'a) ->
    watching_has_changed:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                          Fieldslib.Field.t_with_perm -> 'a) ->
    num_active_syscalls:(([< `Read | `Set_and_create ], Raw_fd.T.t, int)
                         Fieldslib.Field.t_with_perm -> 'a) ->
    close_finished:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                     unit Import.Ivar.t)
                    Fieldslib.Field.t_with_perm -> 'a) ->
    'a list
  module Direct :
    sig
      val iter :
        Raw_fd.T.t ->
        file_descr:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                     Raw_fd.File_descr.t)
                    Fieldslib.Field.t_with_perm ->
                    Raw_fd.T.t -> Raw_fd.File_descr.t -> 'a) ->
        info:(([< `Read | `Set_and_create ], Raw_fd.T.t, Core.Std.Info.t)
              Fieldslib.Field.t_with_perm ->
              Raw_fd.T.t -> Core.Std.Info.t -> 'b) ->
        kind:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.Kind.t)
              Fieldslib.Field.t_with_perm ->
              Raw_fd.T.t -> Raw_fd.Kind.t -> 'c) ->
        supports_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                           Fieldslib.Field.t_with_perm ->
                           Raw_fd.T.t -> bool -> 'd) ->
        have_set_nonblock:(([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                           Fieldslib.Field.t_with_perm ->
                           Raw_fd.T.t -> bool -> 'e) ->
        state:(([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.State.t)
               Fieldslib.Field.t_with_perm ->
               Raw_fd.T.t -> Raw_fd.State.t -> 'f) ->
        watching:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                   Raw_fd.Watching.t Read_write.Mutable.t)
                  Fieldslib.Field.t_with_perm ->
                  Raw_fd.T.t -> Raw_fd.Watching.t Read_write.Mutable.t -> 'g) ->
        watching_has_changed:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                               bool)
                              Fieldslib.Field.t_with_perm ->
                              Raw_fd.T.t -> bool -> 'h) ->
        num_active_syscalls:(([< `Read | `Set_and_create ], Raw_fd.T.t, int)
                             Fieldslib.Field.t_with_perm ->
                             Raw_fd.T.t -> int -> 'i) ->
        close_finished:(([< `Read | `Set_and_create ], Raw_fd.T.t,
                         unit Import.Ivar.t)
                        Fieldslib.Field.t_with_perm ->
                        Raw_fd.T.t -> unit Import.Ivar.t -> 'j) ->
        'j
      val fold :
        Raw_fd.T.t ->
        init:'->
        file_descr:('->
                    ([< `Read | `Set_and_create ], Raw_fd.T.t,
                     Raw_fd.File_descr.t)
                    Fieldslib.Field.t_with_perm ->
                    Raw_fd.T.t -> Raw_fd.File_descr.t -> 'b) ->
        info:('->
              ([< `Read | `Set_and_create ], Raw_fd.T.t, Core.Std.Info.t)
              Fieldslib.Field.t_with_perm ->
              Raw_fd.T.t -> Core.Std.Info.t -> 'c) ->
        kind:('->
              ([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.Kind.t)
              Fieldslib.Field.t_with_perm ->
              Raw_fd.T.t -> Raw_fd.Kind.t -> 'd) ->
        supports_nonblock:('->
                           ([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                           Fieldslib.Field.t_with_perm ->
                           Raw_fd.T.t -> bool -> 'e) ->
        have_set_nonblock:('->
                           ([< `Read | `Set_and_create ], Raw_fd.T.t, bool)
                           Fieldslib.Field.t_with_perm ->
                           Raw_fd.T.t -> bool -> 'f) ->
        state:('->
               ([< `Read | `Set_and_create ], Raw_fd.T.t, Raw_fd.State.t)
               Fieldslib.Field.t_with_perm ->
               Raw_fd.T.t -> Raw_fd.State.t -> 'g) ->
        watching:('->
                  ([< `Read | `Set_and_create ], Raw_fd.T.t,
                   Raw_fd.Watching.t Read_write.Mutable.t)
                  Fieldslib.Field.t_with_perm ->
                  Raw_fd.T.t -> Raw_fd.Watching.t Read_write.Mutable.t -> 'h) ->
        watching_has_changed:('->
                              ([< `Read | `Set_and_create ], Raw_fd.T.t,
                               bool)
                              Fieldslib.Field.t_with_perm ->
                              Raw_fd.T.t -> bool -> 'i) ->
        num_active_syscalls:('->
                             ([< `Read | `Set_and_create ], Raw_fd.T.t, int)
                             Fieldslib.Field.t_with_perm ->
                             Raw_fd.T.t -> int -> 'j) ->
        close_finished:('->
                        ([< `Read | `Set_and_create ], Raw_fd.T.t,
                         unit Import.Ivar.t)
                        Fieldslib.Field.t_with_perm ->
                        Raw_fd.T.t -> unit Import.Ivar.t -> 'k) ->
        'k
    end
end