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) ->
    go_has_been_called:((Raw_scheduler.t, bool) Fieldslib.Field.t ->
                        Raw_scheduler.t -> bool -> 'b) ->
    file_descr_watcher:((Raw_scheduler.t,
                         (Raw_scheduler.Fd.t,
                          Raw_scheduler.Fd.ready_to_result Import.Ivar.t)
                         File_descr_watcher.t)
                        Fieldslib.Field.t ->
                        Raw_scheduler.t ->
                        (Raw_scheduler.Fd.t,
                         Raw_scheduler.Fd.ready_to_result Import.Ivar.t)
                        File_descr_watcher.t -> 'c) ->
    fd_by_descr:((Raw_scheduler.t, Fd_by_descr.t) Fieldslib.Field.t ->
                 Raw_scheduler.t -> Fd_by_descr.t -> 'd) ->
    id_of_thread_running_the_select_loop:((Raw_scheduler.t, int)
                                          Fieldslib.Field.t ->
                                          Raw_scheduler.t -> int -> 'e) ->
    select_interruptor:((Raw_scheduler.t, Interruptor.t) Fieldslib.Field.t ->
                        Raw_scheduler.t -> Interruptor.t -> 'f) ->
    signal_manager:((Raw_scheduler.t, Raw_signal_manager.t) Fieldslib.Field.t ->
                    Raw_scheduler.t -> Raw_signal_manager.t -> 'g) ->
    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 -> 'h) ->
    num_blocked_threads:((Raw_scheduler.t, int) Fieldslib.Field.t ->
                         Raw_scheduler.t -> int -> 'i) ->
    num_live_threads:((Raw_scheduler.t, int) Fieldslib.Field.t ->
                      Raw_scheduler.t -> int -> 'j) ->
    num_reserved_threads:((Raw_scheduler.t, int) Fieldslib.Field.t ->
                          Raw_scheduler.t -> int -> 'k) ->
    max_num_live_threads:((Raw_scheduler.t, int) Fieldslib.Field.t ->
                          Raw_scheduler.t -> int -> 'l) ->
    work_for_threads:((Raw_scheduler.t,
                       Raw_scheduler.Work.t Core.Std.Squeue.t)
                      Fieldslib.Field.t ->
                      Raw_scheduler.t ->
                      Raw_scheduler.Work.t Core.Std.Squeue.t -> 'm) ->
    'm
  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) ->
    go_has_been_called:('->
                        (Raw_scheduler.t, bool) Fieldslib.Field.t ->
                        Raw_scheduler.t -> bool -> 'c) ->
    file_descr_watcher:('->
                        (Raw_scheduler.t,
                         (Raw_scheduler.Fd.t,
                          Raw_scheduler.Fd.ready_to_result Import.Ivar.t)
                         File_descr_watcher.t)
                        Fieldslib.Field.t ->
                        Raw_scheduler.t ->
                        (Raw_scheduler.Fd.t,
                         Raw_scheduler.Fd.ready_to_result Import.Ivar.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) ->
    id_of_thread_running_the_select_loop:('->
                                          (Raw_scheduler.t, int)
                                          Fieldslib.Field.t ->
                                          Raw_scheduler.t -> int -> 'f) ->
    select_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) ->
    num_blocked_threads:('->
                         (Raw_scheduler.t, int) Fieldslib.Field.t ->
                         Raw_scheduler.t -> int -> 'j) ->
    num_live_threads:('->
                      (Raw_scheduler.t, int) Fieldslib.Field.t ->
                      Raw_scheduler.t -> int -> 'k) ->
    num_reserved_threads:('->
                          (Raw_scheduler.t, int) Fieldslib.Field.t ->
                          Raw_scheduler.t -> int -> 'l) ->
    max_num_live_threads:('->
                          (Raw_scheduler.t, int) Fieldslib.Field.t ->
                          Raw_scheduler.t -> int -> 'm) ->
    work_for_threads:('->
                      (Raw_scheduler.t,
                       Raw_scheduler.Work.t Core.Std.Squeue.t)
                      Fieldslib.Field.t ->
                      Raw_scheduler.t ->
                      Raw_scheduler.Work.t Core.Std.Squeue.t -> 'n) ->
    'n
end