sig
  val iter :
    Raw_scheduler.T.t ->
    check_access:((Raw_scheduler.T.t, (unit -> unit) option)
                  Fieldslib.Field.t ->
                  Raw_scheduler.T.t -> (unit -> unit) option -> 'a) ->
    jobs:((Raw_scheduler.T.t,
           Raw_scheduler.Execution_context.t Job.t Jobs.t
           Core.Std.sexp_opaque)
          Fieldslib.Field.t ->
          Raw_scheduler.T.t ->
          Raw_scheduler.Execution_context.t Job.t Jobs.t Core.Std.sexp_opaque ->
          'b) ->
    main_execution_context:((Raw_scheduler.T.t,
                             Raw_scheduler.Execution_context.t)
                            Fieldslib.Field.t ->
                            Raw_scheduler.T.t ->
                            Raw_scheduler.Execution_context.t -> 'c) ->
    current_execution_context:((Raw_scheduler.T.t,
                                Raw_scheduler.Execution_context.t)
                               Fieldslib.Field.t ->
                               Raw_scheduler.T.t ->
                               Raw_scheduler.Execution_context.t -> 'd) ->
    max_num_jobs_per_priority_per_cycle:((Raw_scheduler.T.t, int)
                                         Fieldslib.Field.t ->
                                         Raw_scheduler.T.t -> int -> 'e) ->
    uncaught_exn:((Raw_scheduler.T.t, Core.Std.Error.t option)
                  Fieldslib.Field.t ->
                  Raw_scheduler.T.t -> Core.Std.Error.t option -> 'f) ->
    num_jobs_run:((Raw_scheduler.T.t, int) Fieldslib.Field.t ->
                  Raw_scheduler.T.t -> int -> 'g) ->
    cycle_count:((Raw_scheduler.T.t, int) Fieldslib.Field.t ->
                 Raw_scheduler.T.t -> int -> 'h) ->
    cycle_start:((Raw_scheduler.T.t, Core.Std.Time.t) Fieldslib.Field.t ->
                 Raw_scheduler.T.t -> Core.Std.Time.t -> 'i) ->
    last_cycle_time:((Raw_scheduler.T.t, Core.Std.Time.Span.t)
                     Fieldslib.Field.t ->
                     Raw_scheduler.T.t -> Core.Std.Time.Span.t -> 'j) ->
    cycle_times:((Raw_scheduler.T.t, Core.Std.Time.Span.t Raw_scheduler.tail)
                 Fieldslib.Field.t ->
                 Raw_scheduler.T.t ->
                 Core.Std.Time.Span.t Raw_scheduler.tail -> 'k) ->
    last_cycle_num_jobs:((Raw_scheduler.T.t, int) Fieldslib.Field.t ->
                         Raw_scheduler.T.t -> int -> 'l) ->
    cycle_num_jobs:((Raw_scheduler.T.t, int Raw_scheduler.tail)
                    Fieldslib.Field.t ->
                    Raw_scheduler.T.t -> int Raw_scheduler.tail -> 'm) ->
    events:((Raw_scheduler.T.t,
             Raw_scheduler.Execution_context.t Raw_scheduler.Clock_event.t
             Events.t)
            Fieldslib.Field.t ->
            Raw_scheduler.T.t ->
            Raw_scheduler.Execution_context.t Raw_scheduler.Clock_event.t
            Events.t -> 'n) ->
    finalizer_jobs:((Raw_scheduler.T.t,
                     Raw_scheduler.Execution_context.t Job.t
                     Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque)
                    Fieldslib.Field.t ->
                    Raw_scheduler.T.t ->
                    Raw_scheduler.Execution_context.t Job.t
                    Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque -> 'o) ->
    thread_safe_finalizer_hook:((Raw_scheduler.T.t, unit -> unit)
                                Fieldslib.Field.t ->
                                Raw_scheduler.T.t -> (unit -> unit) -> 'p) ->
    'p
  val fold :
    Raw_scheduler.T.t ->
    init:'->
    check_access:('->
                  (Raw_scheduler.T.t, (unit -> unit) option)
                  Fieldslib.Field.t ->
                  Raw_scheduler.T.t -> (unit -> unit) option -> 'b) ->
    jobs:('->
          (Raw_scheduler.T.t,
           Raw_scheduler.Execution_context.t Job.t Jobs.t
           Core.Std.sexp_opaque)
          Fieldslib.Field.t ->
          Raw_scheduler.T.t ->
          Raw_scheduler.Execution_context.t Job.t Jobs.t Core.Std.sexp_opaque ->
          'c) ->
    main_execution_context:('->
                            (Raw_scheduler.T.t,
                             Raw_scheduler.Execution_context.t)
                            Fieldslib.Field.t ->
                            Raw_scheduler.T.t ->
                            Raw_scheduler.Execution_context.t -> 'd) ->
    current_execution_context:('->
                               (Raw_scheduler.T.t,
                                Raw_scheduler.Execution_context.t)
                               Fieldslib.Field.t ->
                               Raw_scheduler.T.t ->
                               Raw_scheduler.Execution_context.t -> 'e) ->
    max_num_jobs_per_priority_per_cycle:('->
                                         (Raw_scheduler.T.t, int)
                                         Fieldslib.Field.t ->
                                         Raw_scheduler.T.t -> int -> 'f) ->
    uncaught_exn:('->
                  (Raw_scheduler.T.t, Core.Std.Error.t option)
                  Fieldslib.Field.t ->
                  Raw_scheduler.T.t -> Core.Std.Error.t option -> 'g) ->
    num_jobs_run:('->
                  (Raw_scheduler.T.t, int) Fieldslib.Field.t ->
                  Raw_scheduler.T.t -> int -> 'h) ->
    cycle_count:('->
                 (Raw_scheduler.T.t, int) Fieldslib.Field.t ->
                 Raw_scheduler.T.t -> int -> 'i) ->
    cycle_start:('->
                 (Raw_scheduler.T.t, Core.Std.Time.t) Fieldslib.Field.t ->
                 Raw_scheduler.T.t -> Core.Std.Time.t -> 'j) ->
    last_cycle_time:('->
                     (Raw_scheduler.T.t, Core.Std.Time.Span.t)
                     Fieldslib.Field.t ->
                     Raw_scheduler.T.t -> Core.Std.Time.Span.t -> 'k) ->
    cycle_times:('->
                 (Raw_scheduler.T.t, Core.Std.Time.Span.t Raw_scheduler.tail)
                 Fieldslib.Field.t ->
                 Raw_scheduler.T.t ->
                 Core.Std.Time.Span.t Raw_scheduler.tail -> 'l) ->
    last_cycle_num_jobs:('->
                         (Raw_scheduler.T.t, int) Fieldslib.Field.t ->
                         Raw_scheduler.T.t -> int -> 'm) ->
    cycle_num_jobs:('->
                    (Raw_scheduler.T.t, int Raw_scheduler.tail)
                    Fieldslib.Field.t ->
                    Raw_scheduler.T.t -> int Raw_scheduler.tail -> 'n) ->
    events:('->
            (Raw_scheduler.T.t,
             Raw_scheduler.Execution_context.t Raw_scheduler.Clock_event.t
             Events.t)
            Fieldslib.Field.t ->
            Raw_scheduler.T.t ->
            Raw_scheduler.Execution_context.t Raw_scheduler.Clock_event.t
            Events.t -> 'o) ->
    finalizer_jobs:('->
                    (Raw_scheduler.T.t,
                     Raw_scheduler.Execution_context.t Job.t
                     Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque)
                    Fieldslib.Field.t ->
                    Raw_scheduler.T.t ->
                    Raw_scheduler.Execution_context.t Job.t
                    Core.Std.Thread_safe_queue.t Core.Std.sexp_opaque -> 'p) ->
    thread_safe_finalizer_hook:('->
                                (Raw_scheduler.T.t, unit -> unit)
                                Fieldslib.Field.t ->
                                Raw_scheduler.T.t -> (unit -> unit) -> 'q) ->
    'q
end