anchor.diff:               flushed.Add kvI
            for kvI in flushed do
              k2vI.Remove kvI.Key |> ignore
  +         // Must be last as queries may interfere.
  +         kvM.Closed <- Alt.always None
          | _ ->
  -         kvM.Closed <- Alt.always None
  +         ()
       flushed
       |> Seq.iterJob (fun kvI ->
          kvI.Value <-= None)
  
positive.code:        vI <-= Some v
  
    module Alt =
      let query kvM k = Alt.delay <| fun () ->
        let k2vI = kvM.Map
        lock k2vI <| fun () ->
        match k2vI.TryGetValue k with
         | (false, _) ->
           match kvM.Closed with
            | null ->
              let vI = ivar ()
              k2vI.Add (k, vI)
              upcast vI
            | vA ->
              vA
         | (true, vI) ->
           upcast vI
  
negative.code: namespace Hopac.Extra
  
  open System.Collections.Generic
  open System.Threading
  open Hopac
  open Hopac.Infixes
  open Hopac.Extensions
  