sig
  val names : string list
  val thread_safe_finalizer_hook :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, unit -> unit)
    Fieldslib.Field.t_with_perm
  val finalizer_jobs :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
     Job.t Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque)
    Fieldslib.Field.t_with_perm
  val events :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
     Job.t Core.Std.Timing_wheel.t)
    Fieldslib.Field.t_with_perm
  val last_cycle_num_jobs :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
    Fieldslib.Field.t_with_perm
  val last_cycle_time :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, Core.Std.Time.Span.t)
    Fieldslib.Field.t_with_perm
  val run_every_cycle_start :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, (unit -> unit) list)
    Fieldslib.Field.t_with_perm
  val cycle_start :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, Core.Std.Time.t)
    Fieldslib.Field.t_with_perm
  val cycle_count :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
    Fieldslib.Field.t_with_perm
  val num_jobs_run :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
    Fieldslib.Field.t_with_perm
  val global_kill_index :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, Kill_index.t)
    Fieldslib.Field.t_with_perm
  val uncaught_exn :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
     Core.Std.Error.t option)
    Fieldslib.Field.t_with_perm
  val max_num_jobs_per_priority_per_cycle :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
    Fieldslib.Field.t_with_perm
  val current_execution_context :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, Execution_context.t)
    Fieldslib.Field.t_with_perm
  val main_execution_context :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, Execution_context.t)
    Fieldslib.Field.t_with_perm
  val jobs :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, Jobs.t)
    Fieldslib.Field.t_with_perm
  val check_access :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, (unit -> unit) option)
    Fieldslib.Field.t_with_perm
  val make_creator :
    check_access:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   (unit -> unit) option)
                  Fieldslib.Field.t_with_perm ->
                  '-> ('-> (unit -> unit) option) * 'c) ->
    jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, Jobs.t)
          Fieldslib.Field.t_with_perm -> '-> ('-> Jobs.t) * 'd) ->
    main_execution_context:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                             Execution_context.t)
                            Fieldslib.Field.t_with_perm ->
                            '-> ('-> Execution_context.t) * 'e) ->
    current_execution_context:(([< `Read | `Set_and_create ],
                                Raw_scheduler.T.t, Execution_context.t)
                               Fieldslib.Field.t_with_perm ->
                               '-> ('-> Execution_context.t) * 'f) ->
    max_num_jobs_per_priority_per_cycle:(([< `Read | `Set_and_create ],
                                          Raw_scheduler.T.t, int)
                                         Fieldslib.Field.t_with_perm ->
                                         '-> ('-> int) * 'g) ->
    uncaught_exn:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   Core.Std.Error.t option)
                  Fieldslib.Field.t_with_perm ->
                  '-> ('-> Core.Std.Error.t option) * 'h) ->
    global_kill_index:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                        Kill_index.t)
                       Fieldslib.Field.t_with_perm ->
                       '-> ('-> Kill_index.t) * 'i) ->
    num_jobs_run:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                  Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'j) ->
    cycle_count:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                 Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'k) ->
    cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                  Core.Std.Time.t)
                 Fieldslib.Field.t_with_perm ->
                 '-> ('-> Core.Std.Time.t) * 'l) ->
    run_every_cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                            (unit -> unit) list)
                           Fieldslib.Field.t_with_perm ->
                           '-> ('-> (unit -> unit) list) * 'm) ->
    last_cycle_time:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                      Core.Std.Time.Span.t)
                     Fieldslib.Field.t_with_perm ->
                     '-> ('-> Core.Std.Time.Span.t) * 'n) ->
    last_cycle_num_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                          int)
                         Fieldslib.Field.t_with_perm ->
                         '-> ('-> int) * 'o) ->
    events:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
             Job.t Core.Std.Timing_wheel.t)
            Fieldslib.Field.t_with_perm ->
            '-> ('-> Job.t Core.Std.Timing_wheel.t) * 'p) ->
    finalizer_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                     Job.t Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque)
                    Fieldslib.Field.t_with_perm ->
                    '->
                    ('->
                     Job.t Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque) *
                    'q) ->
    thread_safe_finalizer_hook:(([< `Read | `Set_and_create ],
                                 Raw_scheduler.T.t, unit -> unit)
                                Fieldslib.Field.t_with_perm ->
                                '-> ('-> unit -> unit) * 'r) ->
    '-> ('-> Raw_scheduler.T.t) * 'r
  val create :
    check_access:(unit -> unit) option ->
    jobs:Jobs.t ->
    main_execution_context:Execution_context.t ->
    current_execution_context:Execution_context.t ->
    max_num_jobs_per_priority_per_cycle:int ->
    uncaught_exn:Core.Std.Error.t option ->
    global_kill_index:Kill_index.t ->
    num_jobs_run:int ->
    cycle_count:int ->
    cycle_start:Core.Std.Time.t ->
    run_every_cycle_start:(unit -> unit) list ->
    last_cycle_time:Core.Std.Time.Span.t ->
    last_cycle_num_jobs:int ->
    events:Job.t Core.Std.Timing_wheel.t ->
    finalizer_jobs:Job.t Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque ->
    thread_safe_finalizer_hook:(unit -> unit) -> Raw_scheduler.T.t
  val map :
    check_access:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   (unit -> unit) option)
                  Fieldslib.Field.t_with_perm -> (unit -> unit) option) ->
    jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, Jobs.t)
          Fieldslib.Field.t_with_perm -> Jobs.t) ->
    main_execution_context:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                             Execution_context.t)
                            Fieldslib.Field.t_with_perm ->
                            Execution_context.t) ->
    current_execution_context:(([< `Read | `Set_and_create ],
                                Raw_scheduler.T.t, Execution_context.t)
                               Fieldslib.Field.t_with_perm ->
                               Execution_context.t) ->
    max_num_jobs_per_priority_per_cycle:(([< `Read | `Set_and_create ],
                                          Raw_scheduler.T.t, int)
                                         Fieldslib.Field.t_with_perm -> 
                                         int) ->
    uncaught_exn:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   Core.Std.Error.t option)
                  Fieldslib.Field.t_with_perm -> Core.Std.Error.t option) ->
    global_kill_index:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                        Kill_index.t)
                       Fieldslib.Field.t_with_perm -> Kill_index.t) ->
    num_jobs_run:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                  Fieldslib.Field.t_with_perm -> int) ->
    cycle_count:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                 Fieldslib.Field.t_with_perm -> int) ->
    cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                  Core.Std.Time.t)
                 Fieldslib.Field.t_with_perm -> Core.Std.Time.t) ->
    run_every_cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                            (unit -> unit) list)
                           Fieldslib.Field.t_with_perm -> (unit -> unit) list) ->
    last_cycle_time:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                      Core.Std.Time.Span.t)
                     Fieldslib.Field.t_with_perm -> Core.Std.Time.Span.t) ->
    last_cycle_num_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                          int)
                         Fieldslib.Field.t_with_perm -> int) ->
    events:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
             Job.t Core.Std.Timing_wheel.t)
            Fieldslib.Field.t_with_perm -> Job.t Core.Std.Timing_wheel.t) ->
    finalizer_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                     Job.t Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque)
                    Fieldslib.Field.t_with_perm ->
                    Job.t Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque) ->
    thread_safe_finalizer_hook:(([< `Read | `Set_and_create ],
                                 Raw_scheduler.T.t, unit -> unit)
                                Fieldslib.Field.t_with_perm -> unit -> unit) ->
    Raw_scheduler.T.t
  val iter :
    check_access:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   (unit -> unit) option)
                  Fieldslib.Field.t_with_perm -> 'a) ->
    jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, Jobs.t)
          Fieldslib.Field.t_with_perm -> 'b) ->
    main_execution_context:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                             Execution_context.t)
                            Fieldslib.Field.t_with_perm -> 'c) ->
    current_execution_context:(([< `Read | `Set_and_create ],
                                Raw_scheduler.T.t, Execution_context.t)
                               Fieldslib.Field.t_with_perm -> 'd) ->
    max_num_jobs_per_priority_per_cycle:(([< `Read | `Set_and_create ],
                                          Raw_scheduler.T.t, int)
                                         Fieldslib.Field.t_with_perm -> 'e) ->
    uncaught_exn:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   Core.Std.Error.t option)
                  Fieldslib.Field.t_with_perm -> 'f) ->
    global_kill_index:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                        Kill_index.t)
                       Fieldslib.Field.t_with_perm -> 'g) ->
    num_jobs_run:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                  Fieldslib.Field.t_with_perm -> 'h) ->
    cycle_count:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                 Fieldslib.Field.t_with_perm -> 'i) ->
    cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                  Core.Std.Time.t)
                 Fieldslib.Field.t_with_perm -> 'j) ->
    run_every_cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                            (unit -> unit) list)
                           Fieldslib.Field.t_with_perm -> 'k) ->
    last_cycle_time:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                      Core.Std.Time.Span.t)
                     Fieldslib.Field.t_with_perm -> 'l) ->
    last_cycle_num_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                          int)
                         Fieldslib.Field.t_with_perm -> 'm) ->
    events:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
             Job.t Core.Std.Timing_wheel.t)
            Fieldslib.Field.t_with_perm -> 'n) ->
    finalizer_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                     Job.t Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque)
                    Fieldslib.Field.t_with_perm -> 'o) ->
    thread_safe_finalizer_hook:(([< `Read | `Set_and_create ],
                                 Raw_scheduler.T.t, unit -> unit)
                                Fieldslib.Field.t_with_perm -> 'p) ->
    'p
  val fold :
    init:'->
    check_access:('->
                  ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   (unit -> unit) option)
                  Fieldslib.Field.t_with_perm -> 'b) ->
    jobs:('->
          ([< `Read | `Set_and_create ], Raw_scheduler.T.t, Jobs.t)
          Fieldslib.Field.t_with_perm -> 'c) ->
    main_execution_context:('->
                            ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                             Execution_context.t)
                            Fieldslib.Field.t_with_perm -> 'd) ->
    current_execution_context:('->
                               ([< `Read | `Set_and_create ],
                                Raw_scheduler.T.t, Execution_context.t)
                               Fieldslib.Field.t_with_perm -> 'e) ->
    max_num_jobs_per_priority_per_cycle:('->
                                         ([< `Read | `Set_and_create ],
                                          Raw_scheduler.T.t, int)
                                         Fieldslib.Field.t_with_perm -> 'f) ->
    uncaught_exn:('->
                  ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   Core.Std.Error.t option)
                  Fieldslib.Field.t_with_perm -> 'g) ->
    global_kill_index:('->
                       ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                        Kill_index.t)
                       Fieldslib.Field.t_with_perm -> 'h) ->
    num_jobs_run:('->
                  ([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                  Fieldslib.Field.t_with_perm -> 'i) ->
    cycle_count:('->
                 ([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                 Fieldslib.Field.t_with_perm -> 'j) ->
    cycle_start:('->
                 ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                  Core.Std.Time.t)
                 Fieldslib.Field.t_with_perm -> 'k) ->
    run_every_cycle_start:('->
                           ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                            (unit -> unit) list)
                           Fieldslib.Field.t_with_perm -> 'l) ->
    last_cycle_time:('->
                     ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                      Core.Std.Time.Span.t)
                     Fieldslib.Field.t_with_perm -> 'm) ->
    last_cycle_num_jobs:('->
                         ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                          int)
                         Fieldslib.Field.t_with_perm -> 'n) ->
    events:('->
            ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
             Job.t Core.Std.Timing_wheel.t)
            Fieldslib.Field.t_with_perm -> 'o) ->
    finalizer_jobs:('->
                    ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                     Job.t Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque)
                    Fieldslib.Field.t_with_perm -> 'p) ->
    thread_safe_finalizer_hook:('->
                                ([< `Read | `Set_and_create ],
                                 Raw_scheduler.T.t, unit -> unit)
                                Fieldslib.Field.t_with_perm -> 'q) ->
    'q
  val map_poly :
    ([< `Read | `Set_and_create ], Raw_scheduler.T.t, 'a)
    Fieldslib.Field.user -> 'a list
  val for_all :
    check_access:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   (unit -> unit) option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, Jobs.t)
          Fieldslib.Field.t_with_perm -> bool) ->
    main_execution_context:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                             Execution_context.t)
                            Fieldslib.Field.t_with_perm -> bool) ->
    current_execution_context:(([< `Read | `Set_and_create ],
                                Raw_scheduler.T.t, Execution_context.t)
                               Fieldslib.Field.t_with_perm -> bool) ->
    max_num_jobs_per_priority_per_cycle:(([< `Read | `Set_and_create ],
                                          Raw_scheduler.T.t, int)
                                         Fieldslib.Field.t_with_perm -> 
                                         bool) ->
    uncaught_exn:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   Core.Std.Error.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    global_kill_index:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                        Kill_index.t)
                       Fieldslib.Field.t_with_perm -> bool) ->
    num_jobs_run:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                  Fieldslib.Field.t_with_perm -> bool) ->
    cycle_count:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                 Fieldslib.Field.t_with_perm -> bool) ->
    cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                  Core.Std.Time.t)
                 Fieldslib.Field.t_with_perm -> bool) ->
    run_every_cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                            (unit -> unit) list)
                           Fieldslib.Field.t_with_perm -> bool) ->
    last_cycle_time:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                      Core.Std.Time.Span.t)
                     Fieldslib.Field.t_with_perm -> bool) ->
    last_cycle_num_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                          int)
                         Fieldslib.Field.t_with_perm -> bool) ->
    events:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
             Job.t Core.Std.Timing_wheel.t)
            Fieldslib.Field.t_with_perm -> bool) ->
    finalizer_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                     Job.t Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque)
                    Fieldslib.Field.t_with_perm -> bool) ->
    thread_safe_finalizer_hook:(([< `Read | `Set_and_create ],
                                 Raw_scheduler.T.t, unit -> unit)
                                Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val exists :
    check_access:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   (unit -> unit) option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, Jobs.t)
          Fieldslib.Field.t_with_perm -> bool) ->
    main_execution_context:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                             Execution_context.t)
                            Fieldslib.Field.t_with_perm -> bool) ->
    current_execution_context:(([< `Read | `Set_and_create ],
                                Raw_scheduler.T.t, Execution_context.t)
                               Fieldslib.Field.t_with_perm -> bool) ->
    max_num_jobs_per_priority_per_cycle:(([< `Read | `Set_and_create ],
                                          Raw_scheduler.T.t, int)
                                         Fieldslib.Field.t_with_perm -> 
                                         bool) ->
    uncaught_exn:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   Core.Std.Error.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    global_kill_index:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                        Kill_index.t)
                       Fieldslib.Field.t_with_perm -> bool) ->
    num_jobs_run:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                  Fieldslib.Field.t_with_perm -> bool) ->
    cycle_count:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                 Fieldslib.Field.t_with_perm -> bool) ->
    cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                  Core.Std.Time.t)
                 Fieldslib.Field.t_with_perm -> bool) ->
    run_every_cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                            (unit -> unit) list)
                           Fieldslib.Field.t_with_perm -> bool) ->
    last_cycle_time:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                      Core.Std.Time.Span.t)
                     Fieldslib.Field.t_with_perm -> bool) ->
    last_cycle_num_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                          int)
                         Fieldslib.Field.t_with_perm -> bool) ->
    events:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
             Job.t Core.Std.Timing_wheel.t)
            Fieldslib.Field.t_with_perm -> bool) ->
    finalizer_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                     Job.t Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque)
                    Fieldslib.Field.t_with_perm -> bool) ->
    thread_safe_finalizer_hook:(([< `Read | `Set_and_create ],
                                 Raw_scheduler.T.t, unit -> unit)
                                Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val to_list :
    check_access:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   (unit -> unit) option)
                  Fieldslib.Field.t_with_perm -> 'a) ->
    jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, Jobs.t)
          Fieldslib.Field.t_with_perm -> 'a) ->
    main_execution_context:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                             Execution_context.t)
                            Fieldslib.Field.t_with_perm -> 'a) ->
    current_execution_context:(([< `Read | `Set_and_create ],
                                Raw_scheduler.T.t, Execution_context.t)
                               Fieldslib.Field.t_with_perm -> 'a) ->
    max_num_jobs_per_priority_per_cycle:(([< `Read | `Set_and_create ],
                                          Raw_scheduler.T.t, int)
                                         Fieldslib.Field.t_with_perm -> 'a) ->
    uncaught_exn:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                   Core.Std.Error.t option)
                  Fieldslib.Field.t_with_perm -> 'a) ->
    global_kill_index:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                        Kill_index.t)
                       Fieldslib.Field.t_with_perm -> 'a) ->
    num_jobs_run:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                  Fieldslib.Field.t_with_perm -> 'a) ->
    cycle_count:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                 Fieldslib.Field.t_with_perm -> 'a) ->
    cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                  Core.Std.Time.t)
                 Fieldslib.Field.t_with_perm -> 'a) ->
    run_every_cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                            (unit -> unit) list)
                           Fieldslib.Field.t_with_perm -> 'a) ->
    last_cycle_time:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                      Core.Std.Time.Span.t)
                     Fieldslib.Field.t_with_perm -> 'a) ->
    last_cycle_num_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                          int)
                         Fieldslib.Field.t_with_perm -> 'a) ->
    events:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
             Job.t Core.Std.Timing_wheel.t)
            Fieldslib.Field.t_with_perm -> 'a) ->
    finalizer_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                     Job.t Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque)
                    Fieldslib.Field.t_with_perm -> 'a) ->
    thread_safe_finalizer_hook:(([< `Read | `Set_and_create ],
                                 Raw_scheduler.T.t, unit -> unit)
                                Fieldslib.Field.t_with_perm -> 'a) ->
    'a list
  module Direct :
    sig
      val iter :
        Raw_scheduler.T.t ->
        check_access:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                       (unit -> unit) option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_scheduler.T.t -> (unit -> unit) option -> 'a) ->
        jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, Jobs.t)
              Fieldslib.Field.t_with_perm ->
              Raw_scheduler.T.t -> Jobs.t -> 'b) ->
        main_execution_context:(([< `Read | `Set_and_create ],
                                 Raw_scheduler.T.t, Execution_context.t)
                                Fieldslib.Field.t_with_perm ->
                                Raw_scheduler.T.t ->
                                Execution_context.t -> 'c) ->
        current_execution_context:(([< `Read | `Set_and_create ],
                                    Raw_scheduler.T.t, Execution_context.t)
                                   Fieldslib.Field.t_with_perm ->
                                   Raw_scheduler.T.t ->
                                   Execution_context.t -> 'd) ->
        max_num_jobs_per_priority_per_cycle:(([< `Read | `Set_and_create ],
                                              Raw_scheduler.T.t, int)
                                             Fieldslib.Field.t_with_perm ->
                                             Raw_scheduler.T.t -> int -> 'e) ->
        uncaught_exn:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                       Core.Std.Error.t option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_scheduler.T.t -> Core.Std.Error.t option -> 'f) ->
        global_kill_index:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                            Kill_index.t)
                           Fieldslib.Field.t_with_perm ->
                           Raw_scheduler.T.t -> Kill_index.t -> 'g) ->
        num_jobs_run:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                      Fieldslib.Field.t_with_perm ->
                      Raw_scheduler.T.t -> int -> 'h) ->
        cycle_count:(([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                     Fieldslib.Field.t_with_perm ->
                     Raw_scheduler.T.t -> int -> 'i) ->
        cycle_start:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                      Core.Std.Time.t)
                     Fieldslib.Field.t_with_perm ->
                     Raw_scheduler.T.t -> Core.Std.Time.t -> 'j) ->
        run_every_cycle_start:(([< `Read | `Set_and_create ],
                                Raw_scheduler.T.t, (unit -> unit) list)
                               Fieldslib.Field.t_with_perm ->
                               Raw_scheduler.T.t -> (unit -> unit) list -> 'k) ->
        last_cycle_time:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                          Core.Std.Time.Span.t)
                         Fieldslib.Field.t_with_perm ->
                         Raw_scheduler.T.t -> Core.Std.Time.Span.t -> 'l) ->
        last_cycle_num_jobs:(([< `Read | `Set_and_create ],
                              Raw_scheduler.T.t, int)
                             Fieldslib.Field.t_with_perm ->
                             Raw_scheduler.T.t -> int -> 'm) ->
        events:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                 Job.t Core.Std.Timing_wheel.t)
                Fieldslib.Field.t_with_perm ->
                Raw_scheduler.T.t -> Job.t Core.Std.Timing_wheel.t -> 'n) ->
        finalizer_jobs:(([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                         Job.t Core.Std.Thread_safe_queue.t
                         Core.Std.sexp_opaque)
                        Fieldslib.Field.t_with_perm ->
                        Raw_scheduler.T.t ->
                        Job.t Core.Std.Thread_safe_queue.t
                        Core.Std.sexp_opaque -> 'o) ->
        thread_safe_finalizer_hook:(([< `Read | `Set_and_create ],
                                     Raw_scheduler.T.t, unit -> unit)
                                    Fieldslib.Field.t_with_perm ->
                                    Raw_scheduler.T.t -> (unit -> unit) -> 'p) ->
        'p
      val fold :
        Raw_scheduler.T.t ->
        init:'->
        check_access:('->
                      ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                       (unit -> unit) option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_scheduler.T.t -> (unit -> unit) option -> 'b) ->
        jobs:('->
              ([< `Read | `Set_and_create ], Raw_scheduler.T.t, Jobs.t)
              Fieldslib.Field.t_with_perm ->
              Raw_scheduler.T.t -> Jobs.t -> 'c) ->
        main_execution_context:('->
                                ([< `Read | `Set_and_create ],
                                 Raw_scheduler.T.t, Execution_context.t)
                                Fieldslib.Field.t_with_perm ->
                                Raw_scheduler.T.t ->
                                Execution_context.t -> 'd) ->
        current_execution_context:('->
                                   ([< `Read | `Set_and_create ],
                                    Raw_scheduler.T.t, Execution_context.t)
                                   Fieldslib.Field.t_with_perm ->
                                   Raw_scheduler.T.t ->
                                   Execution_context.t -> 'e) ->
        max_num_jobs_per_priority_per_cycle:('->
                                             ([< `Read | `Set_and_create ],
                                              Raw_scheduler.T.t, int)
                                             Fieldslib.Field.t_with_perm ->
                                             Raw_scheduler.T.t -> int -> 'f) ->
        uncaught_exn:('->
                      ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                       Core.Std.Error.t option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_scheduler.T.t -> Core.Std.Error.t option -> 'g) ->
        global_kill_index:('->
                           ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                            Kill_index.t)
                           Fieldslib.Field.t_with_perm ->
                           Raw_scheduler.T.t -> Kill_index.t -> 'h) ->
        num_jobs_run:('->
                      ([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                      Fieldslib.Field.t_with_perm ->
                      Raw_scheduler.T.t -> int -> 'i) ->
        cycle_count:('->
                     ([< `Read | `Set_and_create ], Raw_scheduler.T.t, int)
                     Fieldslib.Field.t_with_perm ->
                     Raw_scheduler.T.t -> int -> 'j) ->
        cycle_start:('->
                     ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                      Core.Std.Time.t)
                     Fieldslib.Field.t_with_perm ->
                     Raw_scheduler.T.t -> Core.Std.Time.t -> 'k) ->
        run_every_cycle_start:('->
                               ([< `Read | `Set_and_create ],
                                Raw_scheduler.T.t, (unit -> unit) list)
                               Fieldslib.Field.t_with_perm ->
                               Raw_scheduler.T.t -> (unit -> unit) list -> 'l) ->
        last_cycle_time:('->
                         ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                          Core.Std.Time.Span.t)
                         Fieldslib.Field.t_with_perm ->
                         Raw_scheduler.T.t -> Core.Std.Time.Span.t -> 'm) ->
        last_cycle_num_jobs:('->
                             ([< `Read | `Set_and_create ],
                              Raw_scheduler.T.t, int)
                             Fieldslib.Field.t_with_perm ->
                             Raw_scheduler.T.t -> int -> 'n) ->
        events:('->
                ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                 Job.t Core.Std.Timing_wheel.t)
                Fieldslib.Field.t_with_perm ->
                Raw_scheduler.T.t -> Job.t Core.Std.Timing_wheel.t -> 'o) ->
        finalizer_jobs:('->
                        ([< `Read | `Set_and_create ], Raw_scheduler.T.t,
                         Job.t Core.Std.Thread_safe_queue.t
                         Core.Std.sexp_opaque)
                        Fieldslib.Field.t_with_perm ->
                        Raw_scheduler.T.t ->
                        Job.t Core.Std.Thread_safe_queue.t
                        Core.Std.sexp_opaque -> 'p) ->
        thread_safe_finalizer_hook:('->
                                    ([< `Read | `Set_and_create ],
                                     Raw_scheduler.T.t, unit -> unit)
                                    Fieldslib.Field.t_with_perm ->
                                    Raw_scheduler.T.t -> (unit -> unit) -> 'q) ->
        'q
    end
end