sig
  type 'a t
  type 'a ivar = 'Raw_ivar.t
  val invariant :
    'Core_kernel.Invariant_intf.inv -> 'a t Core_kernel.Invariant_intf.inv
  val create : unit -> 'Raw_ivar.t
  val create_full : '-> 'Raw_ivar.t
  val peek : 'Raw_ivar.t -> 'a option
  val is_empty : 'Raw_ivar.t -> bool
  val is_full : 'Raw_ivar.t -> bool
  val equal : 'Raw_ivar.t -> 'Raw_ivar.t -> bool
  val connect : bind_result:'Raw_ivar.t -> bind_rhs:'Raw_ivar.t -> unit
  val fill : 'Raw_ivar.t -> '-> unit
  val install_removable_handler :
    'Raw_ivar.t -> 'Raw_handler.t -> Unregister.t
  val upon : 'Raw_ivar.t -> ('-> unit) -> unit
  val upon' : 'Raw_ivar.t -> ('-> unit) -> Unregister.t
  val debug_space_leaks : int option Pervasives.ref
  val indir : 'Raw_ivar.t -> 'Raw_ivar.t
  val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'Raw_ivar.t -> Sexplib.Sexp.t
end