anchor.diff:  
           // track registration
           if registered then
  -            componentsRegistered.Add entityId |> ignore<bool>
  -            componentsUnregistered.Remove entityId |> ignore<bool>
  +            registrations.Add entityId |> ignore<bool>
  +            unregistrations.Remove entityId |> ignore<bool>
   
           // register correlation
           if registered then
               match ecs.Correlations.TryGetValue entityId with
               | (true, correlation) ->
                   correlation.Add this.Name |> ignore<bool>
  -                ecs.CorrelationsChanged.[entityId] <- correlation
  +                ecs.CorrelationChanges.[entityId] <- correlation
               | (false, _) ->
                   ecs.Correlations.Add (entityId, HashSet.singleton StringComparer.Ordinal this.Name)
  -                ecs.CorrelationsChanged.[entityId] <- ecs.EmptyCorrelation
  +                ecs.CorrelationChanges.[entityId] <- ecs.EmptyCorrelation
   
           // fin
           registered
  
positive.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 =
  
negative.code:             match ecs.Correlations.TryGetValue entityId with
              | (true, correlation) ->
                  correlation.Remove this.Name |> ignore<bool>
                  ecs.CorrelationChanges.[entityId] <- correlation
              | (false, _) ->
                  ecs.CorrelationChanges.[entityId] <- ecs.EmptyCorrelation
  
          // fin
          unregistered
  