sig
  type t = {
    file_descr : Raw_fd.File_descr.t;
    mutable info : Core.Std.Info.t;
    mutable kind : Raw_fd.Kind.t;
    supports_nonblock : bool;
    mutable have_set_nonblock : bool;
    mutable state : Raw_fd.State.t;
    watching : Raw_fd.Watching.t Read_write.Mutable.t;
    mutable watching_has_changed : bool;
    mutable num_active_syscalls : int;
    close_finished : unit Import.Ivar.t;
  }
  val sexp_of_t : Raw_fd.T.t -> Sexplib.Sexp.t
  val close_finished : Raw_fd.T.t -> unit Import.Ivar.t
  val num_active_syscalls : Raw_fd.T.t -> int
  val set_num_active_syscalls : Raw_fd.T.t -> int -> unit
  val watching_has_changed : Raw_fd.T.t -> bool
  val set_watching_has_changed : Raw_fd.T.t -> bool -> unit
  val watching : Raw_fd.T.t -> Raw_fd.Watching.t Read_write.Mutable.t
  val state : Raw_fd.T.t -> Raw_fd.State.t
  val set_state : Raw_fd.T.t -> Raw_fd.State.t -> unit
  val have_set_nonblock : Raw_fd.T.t -> bool
  val set_have_set_nonblock : Raw_fd.T.t -> bool -> unit
  val supports_nonblock : Raw_fd.T.t -> bool
  val kind : Raw_fd.T.t -> Raw_fd.Kind.t
  val set_kind : Raw_fd.T.t -> Raw_fd.Kind.t -> unit
  val info : Raw_fd.T.t -> Core.Std.Info.t
  val set_info : Raw_fd.T.t -> Core.Std.Info.t -> unit
  val file_descr : Raw_fd.T.t -> Raw_fd.File_descr.t
  module Fields :
    sig
      val names : string list
      val close_finished : (Raw_fd.T.t, unit Import.Ivar.t) Fieldslib.Field.t
      val num_active_syscalls : (Raw_fd.T.t, int) Fieldslib.Field.t
      val watching_has_changed : (Raw_fd.T.t, bool) Fieldslib.Field.t
      val watching :
        (Raw_fd.T.t, Raw_fd.Watching.t Read_write.Mutable.t)
        Fieldslib.Field.t
      val state : (Raw_fd.T.t, Raw_fd.State.t) Fieldslib.Field.t
      val have_set_nonblock : (Raw_fd.T.t, bool) Fieldslib.Field.t
      val supports_nonblock : (Raw_fd.T.t, bool) Fieldslib.Field.t
      val kind : (Raw_fd.T.t, Raw_fd.Kind.t) Fieldslib.Field.t
      val info : (Raw_fd.T.t, Core.Std.Info.t) Fieldslib.Field.t
      val file_descr : (Raw_fd.T.t, Raw_fd.File_descr.t) Fieldslib.Field.t
      val make_creator :
        file_descr:((Raw_fd.T.t, Raw_fd.File_descr.t) Fieldslib.Field.t ->
                    '-> ('-> Raw_fd.File_descr.t) * 'c) ->
        info:((Raw_fd.T.t, Core.Std.Info.t) Fieldslib.Field.t ->
              '-> ('-> Core.Std.Info.t) * 'd) ->
        kind:((Raw_fd.T.t, Raw_fd.Kind.t) Fieldslib.Field.t ->
              '-> ('-> Raw_fd.Kind.t) * 'e) ->
        supports_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t ->
                           '-> ('-> bool) * 'f) ->
        have_set_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t ->
                           '-> ('-> bool) * 'g) ->
        state:((Raw_fd.T.t, Raw_fd.State.t) Fieldslib.Field.t ->
               '-> ('-> Raw_fd.State.t) * 'h) ->
        watching:((Raw_fd.T.t, Raw_fd.Watching.t Read_write.Mutable.t)
                  Fieldslib.Field.t ->
                  '-> ('-> Raw_fd.Watching.t Read_write.Mutable.t) * 'i) ->
        watching_has_changed:((Raw_fd.T.t, bool) Fieldslib.Field.t ->
                              '-> ('-> bool) * 'j) ->
        num_active_syscalls:((Raw_fd.T.t, int) Fieldslib.Field.t ->
                             '-> ('-> int) * 'k) ->
        close_finished:((Raw_fd.T.t, unit Import.Ivar.t) Fieldslib.Field.t ->
                        '-> ('-> 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 iter :
        file_descr:((Raw_fd.T.t, Raw_fd.File_descr.t) Fieldslib.Field.t -> 'a) ->
        info:((Raw_fd.T.t, Core.Std.Info.t) Fieldslib.Field.t -> 'b) ->
        kind:((Raw_fd.T.t, Raw_fd.Kind.t) Fieldslib.Field.t -> 'c) ->
        supports_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t -> 'd) ->
        have_set_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t -> 'e) ->
        state:((Raw_fd.T.t, Raw_fd.State.t) Fieldslib.Field.t -> 'f) ->
        watching:((Raw_fd.T.t, Raw_fd.Watching.t Read_write.Mutable.t)
                  Fieldslib.Field.t -> 'g) ->
        watching_has_changed:((Raw_fd.T.t, bool) Fieldslib.Field.t -> 'h) ->
        num_active_syscalls:((Raw_fd.T.t, int) Fieldslib.Field.t -> 'i) ->
        close_finished:((Raw_fd.T.t, unit Import.Ivar.t) Fieldslib.Field.t ->
                        'j) ->
        'j
      val fold :
        init:'->
        file_descr:('->
                    (Raw_fd.T.t, Raw_fd.File_descr.t) Fieldslib.Field.t -> 'b) ->
        info:('-> (Raw_fd.T.t, Core.Std.Info.t) Fieldslib.Field.t -> 'c) ->
        kind:('-> (Raw_fd.T.t, Raw_fd.Kind.t) Fieldslib.Field.t -> 'd) ->
        supports_nonblock:('-> (Raw_fd.T.t, bool) Fieldslib.Field.t -> 'e) ->
        have_set_nonblock:('-> (Raw_fd.T.t, bool) Fieldslib.Field.t -> 'f) ->
        state:('-> (Raw_fd.T.t, Raw_fd.State.t) Fieldslib.Field.t -> 'g) ->
        watching:('->
                  (Raw_fd.T.t, Raw_fd.Watching.t Read_write.Mutable.t)
                  Fieldslib.Field.t -> 'h) ->
        watching_has_changed:('->
                              (Raw_fd.T.t, bool) Fieldslib.Field.t -> 'i) ->
        num_active_syscalls:('-> (Raw_fd.T.t, int) Fieldslib.Field.t -> 'j) ->
        close_finished:('->
                        (Raw_fd.T.t, unit Import.Ivar.t) Fieldslib.Field.t ->
                        'k) ->
        'k
      val map :
        file_descr:((Raw_fd.T.t, Raw_fd.File_descr.t) Fieldslib.Field.t ->
                    Raw_fd.File_descr.t) ->
        info:((Raw_fd.T.t, Core.Std.Info.t) Fieldslib.Field.t ->
              Core.Std.Info.t) ->
        kind:((Raw_fd.T.t, Raw_fd.Kind.t) Fieldslib.Field.t -> Raw_fd.Kind.t) ->
        supports_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t -> bool) ->
        have_set_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t -> bool) ->
        state:((Raw_fd.T.t, Raw_fd.State.t) Fieldslib.Field.t ->
               Raw_fd.State.t) ->
        watching:((Raw_fd.T.t, Raw_fd.Watching.t Read_write.Mutable.t)
                  Fieldslib.Field.t -> Raw_fd.Watching.t Read_write.Mutable.t) ->
        watching_has_changed:((Raw_fd.T.t, bool) Fieldslib.Field.t -> bool) ->
        num_active_syscalls:((Raw_fd.T.t, int) Fieldslib.Field.t -> int) ->
        close_finished:((Raw_fd.T.t, unit Import.Ivar.t) Fieldslib.Field.t ->
                        unit Import.Ivar.t) ->
        Raw_fd.T.t
      val map_poly : (Raw_fd.T.t, 'a) Fieldslib.Field.user -> 'a list
      val for_all :
        file_descr:((Raw_fd.T.t, Raw_fd.File_descr.t) Fieldslib.Field.t ->
                    bool) ->
        info:((Raw_fd.T.t, Core.Std.Info.t) Fieldslib.Field.t -> bool) ->
        kind:((Raw_fd.T.t, Raw_fd.Kind.t) Fieldslib.Field.t -> bool) ->
        supports_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t -> bool) ->
        have_set_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t -> bool) ->
        state:((Raw_fd.T.t, Raw_fd.State.t) Fieldslib.Field.t -> bool) ->
        watching:((Raw_fd.T.t, Raw_fd.Watching.t Read_write.Mutable.t)
                  Fieldslib.Field.t -> bool) ->
        watching_has_changed:((Raw_fd.T.t, bool) Fieldslib.Field.t -> bool) ->
        num_active_syscalls:((Raw_fd.T.t, int) Fieldslib.Field.t -> bool) ->
        close_finished:((Raw_fd.T.t, unit Import.Ivar.t) Fieldslib.Field.t ->
                        bool) ->
        bool
      val exists :
        file_descr:((Raw_fd.T.t, Raw_fd.File_descr.t) Fieldslib.Field.t ->
                    bool) ->
        info:((Raw_fd.T.t, Core.Std.Info.t) Fieldslib.Field.t -> bool) ->
        kind:((Raw_fd.T.t, Raw_fd.Kind.t) Fieldslib.Field.t -> bool) ->
        supports_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t -> bool) ->
        have_set_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t -> bool) ->
        state:((Raw_fd.T.t, Raw_fd.State.t) Fieldslib.Field.t -> bool) ->
        watching:((Raw_fd.T.t, Raw_fd.Watching.t Read_write.Mutable.t)
                  Fieldslib.Field.t -> bool) ->
        watching_has_changed:((Raw_fd.T.t, bool) Fieldslib.Field.t -> bool) ->
        num_active_syscalls:((Raw_fd.T.t, int) Fieldslib.Field.t -> bool) ->
        close_finished:((Raw_fd.T.t, unit Import.Ivar.t) Fieldslib.Field.t ->
                        bool) ->
        bool
      val to_list :
        file_descr:((Raw_fd.T.t, Raw_fd.File_descr.t) Fieldslib.Field.t -> 'a) ->
        info:((Raw_fd.T.t, Core.Std.Info.t) Fieldslib.Field.t -> 'a) ->
        kind:((Raw_fd.T.t, Raw_fd.Kind.t) Fieldslib.Field.t -> 'a) ->
        supports_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t -> 'a) ->
        have_set_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t -> 'a) ->
        state:((Raw_fd.T.t, Raw_fd.State.t) Fieldslib.Field.t -> 'a) ->
        watching:((Raw_fd.T.t, Raw_fd.Watching.t Read_write.Mutable.t)
                  Fieldslib.Field.t -> 'a) ->
        watching_has_changed:((Raw_fd.T.t, bool) Fieldslib.Field.t -> 'a) ->
        num_active_syscalls:((Raw_fd.T.t, int) Fieldslib.Field.t -> 'a) ->
        close_finished:((Raw_fd.T.t, unit Import.Ivar.t) Fieldslib.Field.t ->
                        'a) ->
        'a list
      module Direct :
        sig
          val iter :
            Raw_fd.T.t ->
            file_descr:((Raw_fd.T.t, Raw_fd.File_descr.t) Fieldslib.Field.t ->
                        Raw_fd.T.t -> Raw_fd.File_descr.t -> 'a) ->
            info:((Raw_fd.T.t, Core.Std.Info.t) Fieldslib.Field.t ->
                  Raw_fd.T.t -> Core.Std.Info.t -> 'b) ->
            kind:((Raw_fd.T.t, Raw_fd.Kind.t) Fieldslib.Field.t ->
                  Raw_fd.T.t -> Raw_fd.Kind.t -> 'c) ->
            supports_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t ->
                               Raw_fd.T.t -> bool -> 'd) ->
            have_set_nonblock:((Raw_fd.T.t, bool) Fieldslib.Field.t ->
                               Raw_fd.T.t -> bool -> 'e) ->
            state:((Raw_fd.T.t, Raw_fd.State.t) Fieldslib.Field.t ->
                   Raw_fd.T.t -> Raw_fd.State.t -> 'f) ->
            watching:((Raw_fd.T.t, Raw_fd.Watching.t Read_write.Mutable.t)
                      Fieldslib.Field.t ->
                      Raw_fd.T.t ->
                      Raw_fd.Watching.t Read_write.Mutable.t -> 'g) ->
            watching_has_changed:((Raw_fd.T.t, bool) Fieldslib.Field.t ->
                                  Raw_fd.T.t -> bool -> 'h) ->
            num_active_syscalls:((Raw_fd.T.t, int) Fieldslib.Field.t ->
                                 Raw_fd.T.t -> int -> 'i) ->
            close_finished:((Raw_fd.T.t, unit Import.Ivar.t)
                            Fieldslib.Field.t ->
                            Raw_fd.T.t -> unit Import.Ivar.t -> 'j) ->
            'j
          val fold :
            Raw_fd.T.t ->
            init:'->
            file_descr:('->
                        (Raw_fd.T.t, Raw_fd.File_descr.t) Fieldslib.Field.t ->
                        Raw_fd.T.t -> Raw_fd.File_descr.t -> 'b) ->
            info:('->
                  (Raw_fd.T.t, Core.Std.Info.t) Fieldslib.Field.t ->
                  Raw_fd.T.t -> Core.Std.Info.t -> 'c) ->
            kind:('->
                  (Raw_fd.T.t, Raw_fd.Kind.t) Fieldslib.Field.t ->
                  Raw_fd.T.t -> Raw_fd.Kind.t -> 'd) ->
            supports_nonblock:('->
                               (Raw_fd.T.t, bool) Fieldslib.Field.t ->
                               Raw_fd.T.t -> bool -> 'e) ->
            have_set_nonblock:('->
                               (Raw_fd.T.t, bool) Fieldslib.Field.t ->
                               Raw_fd.T.t -> bool -> 'f) ->
            state:('->
                   (Raw_fd.T.t, Raw_fd.State.t) Fieldslib.Field.t ->
                   Raw_fd.T.t -> Raw_fd.State.t -> 'g) ->
            watching:('->
                      (Raw_fd.T.t, Raw_fd.Watching.t Read_write.Mutable.t)
                      Fieldslib.Field.t ->
                      Raw_fd.T.t ->
                      Raw_fd.Watching.t Read_write.Mutable.t -> 'h) ->
            watching_has_changed:('->
                                  (Raw_fd.T.t, bool) Fieldslib.Field.t ->
                                  Raw_fd.T.t -> bool -> 'i) ->
            num_active_syscalls:('->
                                 (Raw_fd.T.t, int) Fieldslib.Field.t ->
                                 Raw_fd.T.t -> int -> 'j) ->
            close_finished:('->
                            (Raw_fd.T.t, unit Import.Ivar.t)
                            Fieldslib.Field.t ->
                            Raw_fd.T.t -> unit Import.Ivar.t -> 'k) ->
            'k
        end
    end
end