functor (Scheduler : Import.Basic_scheduler->
  functor
    (Ivar : sig
              type 'a t
              val of_raw : ('a, Scheduler.Execution_context.t) ivar -> 'a t
              val to_raw : 'a t -> ('a, Scheduler.Execution_context.t) ivar
            end->
    sig
      type 'a t = 'Ivar.t
      val equal :
        'Raw_ivar.Scheduler_dependent.t ->
        'Raw_ivar.Scheduler_dependent.t -> bool
      val create : unit -> 'Raw_ivar.Scheduler_dependent.t
      val create_full : '-> 'Raw_ivar.Scheduler_dependent.t
      val peek : 'Raw_ivar.Scheduler_dependent.t -> 'a option
      val is_empty : 'Raw_ivar.Scheduler_dependent.t -> bool
      val is_full : 'Raw_ivar.Scheduler_dependent.t -> bool
      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
      val of_raw : ('a, Scheduler.Execution_context.t) ivar -> 'a t
      val to_raw : 'a t -> ('a, Scheduler.Execution_context.t) ivar
      val sexp_of_t :
        ('-> Sexplib.Sexp.t) ->
        'Raw_ivar.Scheduler_dependent.t -> Sexplib.Sexp.t
    end