Internal to Async -- see Ivar for the public API.

`type 'a t``= 'a Async_kernel__.Types.Ivar.t```
`include sig ... end`
`val sexp_of_t : ('a ‑> Base.Sexp.t) ‑> 'a t ‑> Base.Sexp.t`
`type 'a ivar``= 'a t```
`include Core_kernel.Invariant.S1 with type a t := a t`
`type 'a t`````
`val invariant : 'a Base__.Invariant_intf.inv ‑> 'a t Base__.Invariant_intf.inv`
`val create : unit ‑> _ t`
`val create_full : 'a ‑> 'a t`
`val peek : 'a t ‑> 'a option`
`val value_exn : 'a t ‑> 'a`
`val value : 'a t ‑> if_empty_then_failwith:string ‑> 'a`
`val is_empty : _ t ‑> bool`
`val is_full : _ t ‑> bool`
`val equal : 'a t ‑> 'a t ‑> bool`
`val connect : bind_result:'a t ‑> bind_rhs:'a t ‑> unit`
`val fill : 'a t ‑> 'a ‑> unit`
`module Handler : sig ... end`
`val add_handler : 'a t ‑> ('a ‑> unit) ‑> Async_kernel.Execution_context.t ‑> 'a Handler.t`
`val remove_handler : 'a t ‑> 'a Handler.t ‑> unit`
`val has_handlers : _ t ‑> bool`
`val upon : 'a t ‑> ('a ‑> unit) ‑> unit`
`val upon' : 'a t ‑> ('a ‑> unit) ‑> 'a Handler.t`
`val indir : 'a t ‑> 'a t`