sig
  type t = {
    jobs :
      Raw_scheduler.Execution_context.t Job.t Jobs.t Core.Std.sexp_opaque;
    mutable current_execution_context :
      Raw_scheduler.Execution_context.t Core.Std.sexp_opaque;
    mutable main_execution_context :
      Raw_scheduler.Execution_context.t Core.Std.sexp_opaque;
    mutable max_num_jobs_per_priority_per_cycle : int;
    mutable uncaught_exception : Core.Std.Error.t option;
    mutable num_jobs_run : int;
    mutable cycle_count : int;
    mutable cycle_start : Core.Std.Time.t;
    cycle_times : Core.Std.Time.Span.t Raw_scheduler.tail;
    cycle_num_jobs : int Raw_scheduler.tail;
    events :
      Raw_scheduler.Execution_context.t Raw_scheduler.Clock_event.t Events.t;
  }
  val sexp_of_t : Raw_scheduler.T.t -> Sexplib.Sexp.t
end