anchor.diff:           override this.Dispose () =
             lock subs <| fun () -> subs.Remove xS |> ignore}}
   
  -  let rec ofAlt xA = xA |>>* fun x -> Cons (x, ofAlt xA)
  +  let rec ofAlt (xA: Alt<_>) = xA |>>* fun x -> Cons (x, ofAlt xA)
   
     let rec merge ls rs =
       mergeSwap ls rs <|>* mergeSwap rs ls
     and mergeSwap ls rs =
  -    ls |>>? function
  -       | Nil -> Nil
  -       | Cons (l, ls) -> Cons (l, merge rs ls)
  +    ls |>>? function Nil -> Nil
  +                   | Cons (l, ls) -> Cons (l, merge rs ls)
   
     let rec append (ls: Streams<_>) (rs: Streams<_>) =
       ls >>=* function
  
positive.code: 
    let rec switchOn ys xs =
      ys <|>*
      xs >>=? function
         | Nil -> nil
         | Cons (x, xs) -> cons x (switchOn ys xs)
  
    let takeUntil evt = switchOn (evt >>%? Nil)
  
  
negative.code:           | Some y -> cons y (choose x2yO xs)
  
    let rec map x2y xs =
      xs |>>* function Nil -> Nil
                     | Cons (x, xs) -> Cons (x2y x, map x2y xs)
  
    let rec joinWith (join: Streams<_> -> Streams<_> -> Streams<_>)
                     (xxs: Streams<Streams<_>>) =
  