anchor.diff:          match tn.Tag with
           | :? Watch as w -> Watch(w)
           | _ -> Archive
  +
  +    static let isWatch (tn:TreeNode) =
  +        match tn with
  +        | Watch _ -> true
  +        | _ -> false
  +
  +    static let isArchive (tn:TreeNode) =
  +        match tn with
  +        | Archive -> true
  +        | _ -> false
   
       ///The text used for constructing "dummy" TreeNodes used as a place-holder until childnodes are 
       ///loaded lazily.
  
positive.code:             if args.Button = MouseButtons.Right then
                  this.SelectedNode <- this.GetNodeAt(args.X, args.Y)
  
          this.AfterSelect.Add <| fun args ->
              afterSelect args.Node
  
          this.AfterExpand.Add <| fun args -> 
              afterExpand args.Node
      with
          member private this.UpdateWatch(tn:TreeNode, value, ty) =
              Control.update this <| fun () ->
  
negative.code: 
          ///Clear all archives and reset the archive count.
          member this.ClearArchives() =
              this.ClearAll isArchive
              archiveCounter <- 0
  
          ///Clear all watches (doesn't include archive nodes).
          member this.ClearWatches() =
              this.ClearAll isWatch
  
          ///Clear all archives (reseting archive count) and watches.
          member this.ClearAll() =
  