anchor.diff:              if handle <> null then
                   match handle.TryGetTarget() with
                   | true, v ->
  -                    v.Untrack this
  +                    v.Untrack this                    
                       handle <- null
                   | false,_ -> ()
               dependencies.RemoveAll()
positive.code: 
      member private this.Signal() = dependencies.Signal this |> ignore
  
      override this.Finalize() =
          (this :> IDisposable).Dispose()
          GC.SuppressFinalize this
  
      interface IObservable<'a> with
          member __.Subscribe obs = 
              dependencies.Add obs
              { 
                  new IDisposable with
                      member __.Dispose() = dependencies.Remove obs
              }
  
      interface ITracksDependents with
          member __.Track dep = dependencies.Add dep
          member __.Untrack dep = dependencies.Remove dep
  
      interface IView<'a> with
          member __.Value with get() = v
  
      interface IDependent with
          member this.RequestRefresh _ = 
              match valueProvider with
              | None -> ()
              | Some(provider) ->
                  let value = provider.Value
                  if filter(value) then
                      v <- value
                      this.Signal()
          member __.HasDependencies with get() = dependencies.HasDependencies
                  
      interface IDisposable with
  
negative.code: 
      member private this.Signal() = dependencies.Signal this |> ignore
  
      member private this.UpdateAndGetValue () =
          if handle <> null then
              match handle.TryGetTarget() with
              | true, provider ->
                  let value = provider.Value
                  if not <| EqualityComparer<'a>.Default.Equals(v, value) then
                      v <- value
                      this.Signal()
              | false, _ -> ()
          v
  
      override this.Finalize() =
          (this :> IDisposable).Dispose()
          GC.SuppressFinalize this
  
      interface IObservable<'a> with
          member __.Subscribe obs = 
              dependencies.Add obs
              { 
                  new IDisposable with
                      member __.Dispose() = dependencies.Remove obs
              }
  
      interface ITracksDependents with
          member __.Track dep = dependencies.Add dep
          member __.Untrack dep = dependencies.Remove dep
  
      interface IView<'a> with
          member this.Value with get() = this.UpdateAndGetValue()
  
      interface IDependent with
          member this.RequestRefresh _ =
              this.UpdateAndGetValue()
              |> ignore
          member __.HasDependencies with get() = dependencies.HasDependencies
  
      interface IDisposable with
  