anchor.diff:          ListTree.findAll (fun system -> system.Name = nodeIdStr) |>
           Seq.iter (fun system ->
               system.GetEntitiesCorrelated () |>
  -            Seq.map (fun correlated -> changes.Add struct (correlated, false); correlated) |>
  +            Seq.map (fun correlated -> changes.Add (HierarchyRemove (nodeId, correlated)); correlated) |>
               Seq.iter (fun correlated -> system.UnregisterCorrelated correlated |> ignore<bool>))
           systemDict.Remove nodeId
   
  
positive.code: 
          // track registration
          if unregistered then
              changes.Add struct (entityId, false)
  
          // unregister correlation
          if unregistered && not isolated then
  
negative.code:             | Some system -> system.UnregisterMultiplexed simplexName entityId
              | _ -> failwith ("Could not find expected system '" + Unchecked.defaultof<'c>.TypeName + "'.")
  
  /// Tracks changes in a hierarchical system.
  type HierarchyChange =
      | HierarchyAdd of Guid * Guid
      | HierarchyRemove of Guid * Guid
  
  /// An Ecs system that stores components in a tree hierarchy.
  type SystemHierarchical<'c, 'w when 'c : struct and 'c :> 'c Component> (buffered, isolated, ecs : 'w Ecs) =
      inherit System<'w> (Unchecked.defaultof<'c>.TypeName)
  
      let systemTree = ListTree.makeEmpty<SystemCorrelated<'c, 'w>> ()
      let systemDict = dictPlus<Guid, SystemCorrelated<'c, 'w>> HashIdentity.Structural []
      let mutable changes = List<HierarchyChange> ()
  
      new (ecs) = SystemHierarchical (false, false, ecs)
  
  