anchor.diff:          |> Stream.merge (filterOn main.FilterAll isAny)
           |> Stream.merge (filterOn main.FilterActive isActive)
           |> Stream.merge (filterOn main.FilterCompleted isCompleted)
  +        |> Stream.keepPreceding1
           |> Stream.mapJob (fun (bn, pred) -> onMain {
              [main.FilterAll; main.FilterActive; main.FilterCompleted]
              |> Seq.iter (fun bn' -> bn'.IsEnabled <- bn <> bn')
  
positive.code:               |> ignore) })
  
        Stream.MVar.tap modelMVar
        |> Stream.subscribeJob (fun model -> onMain {
           let n = Map.toSeq model |> Seq.filter (snd >> isActive) |> Seq.length
           main.NumberOfItems.Text <- sprintf "%d items left" n })
  
        Stream.MVar.tap modelMVar
        |> Stream.subscribeJob (fun model -> onMain {
           let n = Map.toSeq model |> Seq.filter (snd >> isCompleted) |> Seq.length
           main.ClearCompleted.Visibility <-
  
negative.code:           (Stream.ofObservableOnMain control.MouseEnter |> Stream.mapConst +1)
            (Stream.ofObservableOnMain control.MouseLeave |> Stream.mapConst -1)
          |> Stream.scanFromFun 0 (+)
          |> Stream.keepPreceding1
          |> Stream.subscribeJob (fun n -> onMain {
             control.Remove.Visibility <-
               if 0 < n then Visibility.Visible else Visibility.Hidden })
  