sig
  module Priority :
    sig
      type t
      val normal : Jobs.Priority.t
      val low : Jobs.Priority.t
      val to_string : Jobs.Priority.t -> string
      val sexp_of_t : Jobs.Priority.t -> Sexplib.Sexp.t
    end
  type 'job t
  val invariant : 'Jobs.t -> unit
  val create : dummy:'-> 'Jobs.t
  val length : 'Jobs.t -> int
  val is_empty : 'Jobs.t -> bool
  val add : 'job Jobs.t -> Jobs.Priority.t -> 'job -> unit
  val clear : 'Jobs.t -> unit
  val start_cycle : 'Jobs.t -> max_num_jobs_per_priority:int -> unit
  val force_current_cycle_to_end : 'Jobs.t -> unit
  val run_all :
    'job Jobs.t -> ('job -> unit) -> (unit, exn) Core.Std.Result.t
  val sexp_of_t : ('job -> Sexplib.Sexp.t) -> 'job Jobs.t -> Sexplib.Sexp.t
  val ounit_tests : unit -> OUnit.test
end