anchor.diff:          member x.AddCache (name : string) (value : Option<obj>) =
               if enableCacheWrites then x.cache.[name] <- value
               value
  -
  -        override x.Finalize() =
  -            freeCWT x.children
  -            ()
           
           member x.Path = 
               match x.path with
  
positive.code:     //when not given a scope we need to use the currentScope
      //these functions are called by the ?-operator
      let tryGetInhAttribute (node : obj) (name : string) =
          match node with
              | :? Scope as scope -> tryGetInhAttributeScope node scope name
              | _ -> 
                  let s = rootScope.Value.GetChildScope node
                  match s.cache.TryGetValue name with
                      | (true, v) -> v
                      | _ ->
                          match currentScope.Value.parent with
                              | Some parent -> tryGetInhAttributeScope node (parent.GetChildScope node) name
                              | None -> None
  
      let tryGetSynAttribute (o : obj) (name : string) =
          match o with
  
negative.code:                                    c
                      )
  
  
          member x.TryGetChildScope(child : obj) =
              lock x (fun () ->
                          match x.children.TryGetValue child with
                              | (true,c) -> Some c
                              | _ -> None
                      )
  
          member x.TryFindCacheValue (name : string) =
              if enableCacheWrites then
                  match x.cache.TryGetValue name with
  