anchor.diff:                  true
               | (false, _) -> false
   
  +        // track registration
  +        if registered then
  +            componentsRegistered.Add entityId |> ignore<bool>
  +            componentsUnregistered.Remove entityId |> ignore<bool>
  +
           // register correlation
           if registered then
               match ecs.Correlations.TryGetValue entityId with
  
positive.code: 
      let systemTree = ListTree.makeEmpty<SystemCorrelated<'c, 'w>> ()
      let systemDict = dictPlus<Guid, SystemCorrelated<'c, 'w>> HashIdentity.Structural []
  
      new (ecs) = SystemHierarchical (false, ecs)
  
      member this.Components with get () = systemTree |> ListTree.map (fun system -> system.Correlateds)
      member this.WithComponentsBuffered fn worldOpt = systemTree |> ListTree.map (fun system -> system.WithCorrelatedsBuffered fn worldOpt)
  
      member this.IndexNode nodeId =
          match systemDict.TryGetValue nodeId with
  
negative.code:             | Some system -> system.Components
              | None -> failwith ("Could not find expected system '" + Unchecked.defaultof<'c>.TypeName + "'.")
  
          member this.PopComponentStates<'c when 'c : struct and 'c :> 'c Component> () =
              match this.TryIndexSystem<'c, SystemHierarchical<'c, 'w>> () with
              | Some system -> system.PopComponentStates ()
              | None -> failwith ("Could not find expected system '" + Unchecked.defaultof<'c>.TypeName + "'.")
  
          member this.IndexNode<'c when 'c : struct and 'c :> 'c Component> nodeId =
              match this.TryIndexSystem<'c, SystemHierarchical<'c, 'w>> () with
              | Some system -> system.IndexNode nodeId
  