sig
  val names : string list
  val core_scheduler :
    (Raw_scheduler.t, Raw_scheduler.Core_scheduler.t) Fieldslib.Field.t
  val thread_pool : (Raw_scheduler.t, Import.Thread_pool.t) Fieldslib.Field.t
  val finalizer_jobs :
    (Raw_scheduler.t,
     Raw_scheduler.finalizer_job Core.Std.Thread_safe_queue.t
     Core.Std.sexp_opaque)
    Fieldslib.Field.t
  val signal_manager :
    (Raw_scheduler.t, Raw_signal_manager.t) Fieldslib.Field.t
  val interruptor : (Raw_scheduler.t, Interruptor.t) Fieldslib.Field.t
  val scheduler_thread_id : (Raw_scheduler.t, int) Fieldslib.Field.t
  val fd_by_descr : (Raw_scheduler.t, Fd_by_descr.t) Fieldslib.Field.t
  val file_descr_watcher :
    (Raw_scheduler.t, File_descr_watcher.t) Fieldslib.Field.t
  val fds_whose_watching_has_changed :
    (Raw_scheduler.t, Raw_scheduler.Fd.t list) Fieldslib.Field.t
  val is_running : (Raw_scheduler.t, bool) Fieldslib.Field.t
  val mutex : (Raw_scheduler.t, Core.Std.Nano_mutex.t) Fieldslib.Field.t
  val make_creator :
    mutex:((Raw_scheduler.t, Core.Std.Nano_mutex.t) Fieldslib.Field.t ->
           '-> ('-> Core.Std.Nano_mutex.t) * 'c) ->
    is_running:((Raw_scheduler.t, bool) Fieldslib.Field.t ->
                '-> ('-> bool) * 'd) ->
    fds_whose_watching_has_changed:((Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t ->
                                    '->
                                    ('-> Raw_scheduler.Fd.t list) * 'e) ->
    file_descr_watcher:((Raw_scheduler.t, File_descr_watcher.t)
                        Fieldslib.Field.t ->
                        '-> ('-> File_descr_watcher.t) * 'f) ->
    fd_by_descr:((Raw_scheduler.t, Fd_by_descr.t) Fieldslib.Field.t ->
                 '-> ('-> Fd_by_descr.t) * 'g) ->
    scheduler_thread_id:((Raw_scheduler.t, int) Fieldslib.Field.t ->
                         '-> ('-> int) * 'h) ->
    interruptor:((Raw_scheduler.t, Interruptor.t) Fieldslib.Field.t ->
                 '-> ('-> Interruptor.t) * 'i) ->
    signal_manager:((Raw_scheduler.t, Raw_signal_manager.t) Fieldslib.Field.t ->
                    '-> ('-> Raw_signal_manager.t) * 'j) ->
    finalizer_jobs:((Raw_scheduler.t,
                     Raw_scheduler.finalizer_job Core.Std.Thread_safe_queue.t
                     Core.Std.sexp_opaque)
                    Fieldslib.Field.t ->
                    '->
                    ('->
                     Raw_scheduler.finalizer_job Core.Std.Thread_safe_queue.t
                     Core.Std.sexp_opaque) *
                    'k) ->
    thread_pool:((Raw_scheduler.t, Import.Thread_pool.t) Fieldslib.Field.t ->
                 '-> ('-> Import.Thread_pool.t) * 'l) ->
    core_scheduler:((Raw_scheduler.t, Raw_scheduler.Core_scheduler.t)
                    Fieldslib.Field.t ->
                    '-> ('-> Raw_scheduler.Core_scheduler.t) * 'm) ->
    '-> ('-> Raw_scheduler.t) * 'm
  val create :
    mutex:Core.Std.Nano_mutex.t ->
    is_running:bool ->
    fds_whose_watching_has_changed:Raw_scheduler.Fd.t list ->
    file_descr_watcher:File_descr_watcher.t ->
    fd_by_descr:Fd_by_descr.t ->
    scheduler_thread_id:int ->
    interruptor:Interruptor.t ->
    signal_manager:Raw_signal_manager.t ->
    finalizer_jobs:Raw_scheduler.finalizer_job Core.Std.Thread_safe_queue.t
                   Core.Std.sexp_opaque ->
    thread_pool:Import.Thread_pool.t ->
    core_scheduler:Raw_scheduler.Core_scheduler.t -> Raw_scheduler.t
  val iter :
    mutex:((Raw_scheduler.t, Core.Std.Nano_mutex.t) Fieldslib.Field.t -> 'a) ->
    is_running:((Raw_scheduler.t, bool) Fieldslib.Field.t -> 'b) ->
    fds_whose_watching_has_changed:((Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t -> 'c) ->
    file_descr_watcher:((Raw_scheduler.t, File_descr_watcher.t)
                        Fieldslib.Field.t -> 'd) ->
    fd_by_descr:((Raw_scheduler.t, Fd_by_descr.t) Fieldslib.Field.t -> 'e) ->
    scheduler_thread_id:((Raw_scheduler.t, int) Fieldslib.Field.t -> 'f) ->
    interruptor:((Raw_scheduler.t, Interruptor.t) Fieldslib.Field.t -> 'g) ->
    signal_manager:((Raw_scheduler.t, Raw_signal_manager.t) Fieldslib.Field.t ->
                    'h) ->
    finalizer_jobs:((Raw_scheduler.t,
                     Raw_scheduler.finalizer_job Core.Std.Thread_safe_queue.t
                     Core.Std.sexp_opaque)
                    Fieldslib.Field.t -> 'i) ->
    thread_pool:((Raw_scheduler.t, Import.Thread_pool.t) Fieldslib.Field.t ->
                 'j) ->
    core_scheduler:((Raw_scheduler.t, Raw_scheduler.Core_scheduler.t)
                    Fieldslib.Field.t -> 'k) ->
    'k
  val fold :
    init:'->
    mutex:('->
           (Raw_scheduler.t, Core.Std.Nano_mutex.t) Fieldslib.Field.t -> 'b) ->
    is_running:('-> (Raw_scheduler.t, bool) Fieldslib.Field.t -> 'c) ->
    fds_whose_watching_has_changed:('->
                                    (Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t -> 'd) ->
    file_descr_watcher:('->
                        (Raw_scheduler.t, File_descr_watcher.t)
                        Fieldslib.Field.t -> 'e) ->
    fd_by_descr:('->
                 (Raw_scheduler.t, Fd_by_descr.t) Fieldslib.Field.t -> 'f) ->
    scheduler_thread_id:('-> (Raw_scheduler.t, int) Fieldslib.Field.t -> 'g) ->
    interruptor:('->
                 (Raw_scheduler.t, Interruptor.t) Fieldslib.Field.t -> 'h) ->
    signal_manager:('->
                    (Raw_scheduler.t, Raw_signal_manager.t) Fieldslib.Field.t ->
                    'i) ->
    finalizer_jobs:('->
                    (Raw_scheduler.t,
                     Raw_scheduler.finalizer_job Core.Std.Thread_safe_queue.t
                     Core.Std.sexp_opaque)
                    Fieldslib.Field.t -> 'j) ->
    thread_pool:('->
                 (Raw_scheduler.t, Import.Thread_pool.t) Fieldslib.Field.t ->
                 'k) ->
    core_scheduler:('->
                    (Raw_scheduler.t, Raw_scheduler.Core_scheduler.t)
                    Fieldslib.Field.t -> 'l) ->
    'l
  val map :
    mutex:((Raw_scheduler.t, Core.Std.Nano_mutex.t) Fieldslib.Field.t ->
           Core.Std.Nano_mutex.t) ->
    is_running:((Raw_scheduler.t, bool) Fieldslib.Field.t -> bool) ->
    fds_whose_watching_has_changed:((Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t ->
                                    Raw_scheduler.Fd.t list) ->
    file_descr_watcher:((Raw_scheduler.t, File_descr_watcher.t)
                        Fieldslib.Field.t -> File_descr_watcher.t) ->
    fd_by_descr:((Raw_scheduler.t, Fd_by_descr.t) Fieldslib.Field.t ->
                 Fd_by_descr.t) ->
    scheduler_thread_id:((Raw_scheduler.t, int) Fieldslib.Field.t -> int) ->
    interruptor:((Raw_scheduler.t, Interruptor.t) Fieldslib.Field.t ->
                 Interruptor.t) ->
    signal_manager:((Raw_scheduler.t, Raw_signal_manager.t) Fieldslib.Field.t ->
                    Raw_signal_manager.t) ->
    finalizer_jobs:((Raw_scheduler.t,
                     Raw_scheduler.finalizer_job Core.Std.Thread_safe_queue.t
                     Core.Std.sexp_opaque)
                    Fieldslib.Field.t ->
                    Raw_scheduler.finalizer_job Core.Std.Thread_safe_queue.t
                    Core.Std.sexp_opaque) ->
    thread_pool:((Raw_scheduler.t, Import.Thread_pool.t) Fieldslib.Field.t ->
                 Import.Thread_pool.t) ->
    core_scheduler:((Raw_scheduler.t, Raw_scheduler.Core_scheduler.t)
                    Fieldslib.Field.t -> Raw_scheduler.Core_scheduler.t) ->
    Raw_scheduler.t
  val map_poly : (Raw_scheduler.t, 'a) Fieldslib.Field.user -> 'a list
  val for_all :
    mutex:((Raw_scheduler.t, Core.Std.Nano_mutex.t) Fieldslib.Field.t -> bool) ->
    is_running:((Raw_scheduler.t, bool) Fieldslib.Field.t -> bool) ->
    fds_whose_watching_has_changed:((Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t -> bool) ->
    file_descr_watcher:((Raw_scheduler.t, File_descr_watcher.t)
                        Fieldslib.Field.t -> bool) ->
    fd_by_descr:((Raw_scheduler.t, Fd_by_descr.t) Fieldslib.Field.t -> bool) ->
    scheduler_thread_id:((Raw_scheduler.t, int) Fieldslib.Field.t -> bool) ->
    interruptor:((Raw_scheduler.t, Interruptor.t) Fieldslib.Field.t -> bool) ->
    signal_manager:((Raw_scheduler.t, Raw_signal_manager.t) Fieldslib.Field.t ->
                    bool) ->
    finalizer_jobs:((Raw_scheduler.t,
                     Raw_scheduler.finalizer_job Core.Std.Thread_safe_queue.t
                     Core.Std.sexp_opaque)
                    Fieldslib.Field.t -> bool) ->
    thread_pool:((Raw_scheduler.t, Import.Thread_pool.t) Fieldslib.Field.t ->
                 bool) ->
    core_scheduler:((Raw_scheduler.t, Raw_scheduler.Core_scheduler.t)
                    Fieldslib.Field.t -> bool) ->
    bool
  val exists :
    mutex:((Raw_scheduler.t, Core.Std.Nano_mutex.t) Fieldslib.Field.t -> bool) ->
    is_running:((Raw_scheduler.t, bool) Fieldslib.Field.t -> bool) ->
    fds_whose_watching_has_changed:((Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t -> bool) ->
    file_descr_watcher:((Raw_scheduler.t, File_descr_watcher.t)
                        Fieldslib.Field.t -> bool) ->
    fd_by_descr:((Raw_scheduler.t, Fd_by_descr.t) Fieldslib.Field.t -> bool) ->
    scheduler_thread_id:((Raw_scheduler.t, int) Fieldslib.Field.t -> bool) ->
    interruptor:((Raw_scheduler.t, Interruptor.t) Fieldslib.Field.t -> bool) ->
    signal_manager:((Raw_scheduler.t, Raw_signal_manager.t) Fieldslib.Field.t ->
                    bool) ->
    finalizer_jobs:((Raw_scheduler.t,
                     Raw_scheduler.finalizer_job Core.Std.Thread_safe_queue.t
                     Core.Std.sexp_opaque)
                    Fieldslib.Field.t -> bool) ->
    thread_pool:((Raw_scheduler.t, Import.Thread_pool.t) Fieldslib.Field.t ->
                 bool) ->
    core_scheduler:((Raw_scheduler.t, Raw_scheduler.Core_scheduler.t)
                    Fieldslib.Field.t -> bool) ->
    bool
  val to_list :
    mutex:((Raw_scheduler.t, Core.Std.Nano_mutex.t) Fieldslib.Field.t -> 'a) ->
    is_running:((Raw_scheduler.t, bool) Fieldslib.Field.t -> 'a) ->
    fds_whose_watching_has_changed:((Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t -> 'a) ->
    file_descr_watcher:((Raw_scheduler.t, File_descr_watcher.t)
                        Fieldslib.Field.t -> 'a) ->
    fd_by_descr:((Raw_scheduler.t, Fd_by_descr.t) Fieldslib.Field.t -> 'a) ->
    scheduler_thread_id:((Raw_scheduler.t, int) Fieldslib.Field.t -> 'a) ->
    interruptor:((Raw_scheduler.t, Interruptor.t) Fieldslib.Field.t -> 'a) ->
    signal_manager:((Raw_scheduler.t, Raw_signal_manager.t) Fieldslib.Field.t ->
                    'a) ->
    finalizer_jobs:((Raw_scheduler.t,
                     Raw_scheduler.finalizer_job Core.Std.Thread_safe_queue.t
                     Core.Std.sexp_opaque)
                    Fieldslib.Field.t -> 'a) ->
    thread_pool:((Raw_scheduler.t, Import.Thread_pool.t) Fieldslib.Field.t ->
                 'a) ->
    core_scheduler:((Raw_scheduler.t, Raw_scheduler.Core_scheduler.t)
                    Fieldslib.Field.t -> 'a) ->
    'a list
  module Direct :
    sig
      val iter :
        Raw_scheduler.t ->
        mutex:((Raw_scheduler.t, Core.Std.Nano_mutex.t) Fieldslib.Field.t ->
               Raw_scheduler.t -> Core.Std.Nano_mutex.t -> 'a) ->
        is_running:((Raw_scheduler.t, bool) Fieldslib.Field.t ->
                    Raw_scheduler.t -> bool -> 'b) ->
        fds_whose_watching_has_changed:((Raw_scheduler.t,
                                         Raw_scheduler.Fd.t list)
                                        Fieldslib.Field.t ->
                                        Raw_scheduler.t ->
                                        Raw_scheduler.Fd.t list -> 'c) ->
        file_descr_watcher:((Raw_scheduler.t, File_descr_watcher.t)
                            Fieldslib.Field.t ->
                            Raw_scheduler.t -> File_descr_watcher.t -> 'd) ->
        fd_by_descr:((Raw_scheduler.t, Fd_by_descr.t) Fieldslib.Field.t ->
                     Raw_scheduler.t -> Fd_by_descr.t -> 'e) ->
        scheduler_thread_id:((Raw_scheduler.t, int) Fieldslib.Field.t ->
                             Raw_scheduler.t -> int -> 'f) ->
        interruptor:((Raw_scheduler.t, Interruptor.t) Fieldslib.Field.t ->
                     Raw_scheduler.t -> Interruptor.t -> 'g) ->
        signal_manager:((Raw_scheduler.t, Raw_signal_manager.t)
                        Fieldslib.Field.t ->
                        Raw_scheduler.t -> Raw_signal_manager.t -> 'h) ->
        finalizer_jobs:((Raw_scheduler.t,
                         Raw_scheduler.finalizer_job
                         Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque)
                        Fieldslib.Field.t ->
                        Raw_scheduler.t ->
                        Raw_scheduler.finalizer_job
                        Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque ->
                        'i) ->
        thread_pool:((Raw_scheduler.t, Import.Thread_pool.t)
                     Fieldslib.Field.t ->
                     Raw_scheduler.t -> Import.Thread_pool.t -> 'j) ->
        core_scheduler:((Raw_scheduler.t, Raw_scheduler.Core_scheduler.t)
                        Fieldslib.Field.t ->
                        Raw_scheduler.t ->
                        Raw_scheduler.Core_scheduler.t -> 'k) ->
        'k
      val fold :
        Raw_scheduler.t ->
        init:'->
        mutex:('->
               (Raw_scheduler.t, Core.Std.Nano_mutex.t) Fieldslib.Field.t ->
               Raw_scheduler.t -> Core.Std.Nano_mutex.t -> 'b) ->
        is_running:('->
                    (Raw_scheduler.t, bool) Fieldslib.Field.t ->
                    Raw_scheduler.t -> bool -> 'c) ->
        fds_whose_watching_has_changed:('->
                                        (Raw_scheduler.t,
                                         Raw_scheduler.Fd.t list)
                                        Fieldslib.Field.t ->
                                        Raw_scheduler.t ->
                                        Raw_scheduler.Fd.t list -> 'd) ->
        file_descr_watcher:('->
                            (Raw_scheduler.t, File_descr_watcher.t)
                            Fieldslib.Field.t ->
                            Raw_scheduler.t -> File_descr_watcher.t -> 'e) ->
        fd_by_descr:('->
                     (Raw_scheduler.t, Fd_by_descr.t) Fieldslib.Field.t ->
                     Raw_scheduler.t -> Fd_by_descr.t -> 'f) ->
        scheduler_thread_id:('->
                             (Raw_scheduler.t, int) Fieldslib.Field.t ->
                             Raw_scheduler.t -> int -> 'g) ->
        interruptor:('->
                     (Raw_scheduler.t, Interruptor.t) Fieldslib.Field.t ->
                     Raw_scheduler.t -> Interruptor.t -> 'h) ->
        signal_manager:('->
                        (Raw_scheduler.t, Raw_signal_manager.t)
                        Fieldslib.Field.t ->
                        Raw_scheduler.t -> Raw_signal_manager.t -> 'i) ->
        finalizer_jobs:('->
                        (Raw_scheduler.t,
                         Raw_scheduler.finalizer_job
                         Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque)
                        Fieldslib.Field.t ->
                        Raw_scheduler.t ->
                        Raw_scheduler.finalizer_job
                        Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque ->
                        'j) ->
        thread_pool:('->
                     (Raw_scheduler.t, Import.Thread_pool.t)
                     Fieldslib.Field.t ->
                     Raw_scheduler.t -> Import.Thread_pool.t -> 'k) ->
        core_scheduler:('->
                        (Raw_scheduler.t, Raw_scheduler.Core_scheduler.t)
                        Fieldslib.Field.t ->
                        Raw_scheduler.t ->
                        Raw_scheduler.Core_scheduler.t -> 'l) ->
        'l
    end
end