anchor.diff:  
           ///Clear all archives and reset the archive count.
           member this.ClearArchives() =
  -            this.ClearAll(fun tn -> tn.Tag :? Watch |> not)
  +            this.ClearAll isArchive
               archiveCounter <- 0
   
           ///Clear all watches (doesn't include archive nodes).
           member this.ClearWatches() =
  -            this.ClearAll(fun tn -> tn.Tag :? Watch)
  +            this.ClearAll isWatch
   
           ///Clear all archives (reseting archive count) and watches.
           member this.ClearAll() =
  
positive.code:         match tn.Tag with
          | :? Watch as w -> Watch(w)
          | _ -> Archive
  
      ///The text used for constructing "dummy" TreeNodes used as a place-holder until childnodes are 
      ///loaded lazily.
  
negative.code:         ///Take archival snap shot of all current watches using the given label.
          member this.Archive(label: string) =
              Control.update this <| fun () ->
                  let nodesToArchiveCloned = [| 
                      for tn in this.Nodes do
                          if tn |> isWatch then
                              yield tn.Clone() :?> TreeNode |]
              
                  this.ClearAll isWatch
  
                  let archiveNode = TreeNode(Text = label)
                  archiveNode.Nodes.AddRange(nodesToArchiveCloned)
  