anchor.diff:          inherit System.Attribute()
   
       let mutable unpack : obj -> obj = id
  -
  +    
  +    #if DEBUGSCOPES
  +    let allScopes = HashSet<obj>()
  +    #endif
  +    
       [<ReferenceEquality>]
       type Scope = { parent       : Option<Scope>
                      source       : obj
  
positive.code:         member x.AddCache (name : string) (value : Option<obj>) =
              if enableCacheWrites then x.cache.[name] <- value
              value
          
          member x.Path = 
              match x.path with
  
negative.code:                    cache        : Dictionary<string, Option<obj>>
                     mutable path         : Option<string> } with
  
  
          member x.GetChildScope(child : obj) =
              lock x (fun () ->
                          match x.children.TryGetValue child with
                              | (true,c) -> c
                              | _ -> let c = { parent = Some(x); source = child; children = newCWT(); cache = Dictionary(); path = None}
                                     #if DEBUGSCOPES
                                     allScopes.Add (System.WeakReference<obj>(x :> obj)) |> ignore
                                     #endif
                                     x.children.Add(child, c)
                                     c
                      )
  