sig
  module Handler : sig type ('a, 'execution_context) t end
  type ('a, 'execution_context) t
  val sexp_of_t :
    ('-> Sexplib.Sexp.t) ->
    ('execution_context -> Sexplib.Sexp.t) ->
    ('a, 'execution_context) Raw_ivar.t -> Sexplib.Sexp.t
  type ('a, 'execution_context) ivar = ('a, 'execution_context) Raw_ivar.t
  val equal : ('a, 'b) Raw_ivar.t -> ('a, 'b) Raw_ivar.t -> bool
  val create : unit -> ('a, 'b) Raw_ivar.t
  val create_full : '-> ('a, 'b) Raw_ivar.t
  val peek : ('a, 'b) Raw_ivar.t -> 'a option
  val is_empty : ('a, 'b) Raw_ivar.t -> bool
  val is_full : ('a, 'b) Raw_ivar.t -> bool
  module Scheduler_dependent :
    functor (Scheduler : Import.Basic_scheduler->
      sig
        type 'a t = ('a, Scheduler.Execution_context.t) Raw_ivar.ivar
        val sexp_of_t :
          ('-> Sexplib.Sexp.t) ->
          'Raw_ivar.Scheduler_dependent.t -> Sexplib.Sexp.t
        type 'a detailed = 'Raw_ivar.Scheduler_dependent.t
        val sexp_of_detailed :
          ('-> Sexplib.Sexp.t) ->
          'Raw_ivar.Scheduler_dependent.detailed -> Sexplib.Sexp.t
        val connect :
          bind_result:'Raw_ivar.Scheduler_dependent.t ->
          bind_rhs:'Raw_ivar.Scheduler_dependent.t -> unit
        val fill : 'Raw_ivar.Scheduler_dependent.t -> '-> unit
        val install_removable_handler :
          'Raw_ivar.Scheduler_dependent.t ->
          ('a, Scheduler.Execution_context.t) Raw_handler.t -> Unregister.t
        val upon : 'Raw_ivar.Scheduler_dependent.t -> ('-> unit) -> unit
        val upon' :
          'Raw_ivar.Scheduler_dependent.t -> ('-> unit) -> Unregister.t
      end
  val debug_space_leaks : int option Pervasives.ref
  val ounit_tests : unit -> OUnit.test
end