anchor.diff:  ﻿namespace Aardvark.Base
  -
   
   open System.Collections.Generic
   open System.Runtime.CompilerServices
  
positive.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}
                                     x.children.Add(child, c)
                                     c
                      )
  
negative.code:         inherit System.Attribute()
  
      let mutable unpack : obj -> obj = id
      
      #if DEBUGSCOPES
      let allScopes = HashSet<obj>()
      #endif
      
      [<ReferenceEquality>]
      type Scope = { parent       : Option<Scope>
                     source       : obj
  