anchor.diff:              match this.TryIndexSystem<'c, SystemMultiplexed<'c, 'w>> () with
               | Some system ->
                   let _ = system.RegisterMultiplexed comp simplexName entityId
  -                match this.Correlations.TryGetValue entityId with
  -                | (true, correlation) -> correlation.Add system.Name |> ignore<bool>
  -                | (false, _) -> this.Correlations.Add (entityId, HashSet.singleton StringComparer.Ordinal system.Name)
  +                match this.CorrelationsInternal.TryGetValue entityId with
  +                | (true, correlation) ->
  +                    correlation.Add system.Name |> ignore<bool>
  +                    this.CorrelationsChangedInternal.[entityId] <- correlation
  +                | (false, _) ->
  +                    this.CorrelationsInternal.Add (entityId, HashSet.singleton StringComparer.Ordinal system.Name)
  +                    this.CorrelationsChangedInternal.[entityId] <- this.EmptyCorrelation
               | None -> failwith ("Could not find expected system '" + Unchecked.defaultof<'c>.TypeName + "'.")
   
           member this.UnregisterMultiplexed<'c when 'c : struct and 'c :> 'c Component> simplexName entityId =
               match this.TryIndexSystem<'c, SystemMultiplexed<'c, 'w>> () with
               | Some system ->
                   if system.UnregisterMultiplexed simplexName entityId this then
  -                    match this.Correlations.TryGetValue entityId with
  -                    | (true, correlation) -> correlation.Remove system.Name |> ignore<bool>
  -                    | (false, _) -> ()
  +                    match this.CorrelationsInternal.TryGetValue entityId with
  +                    | (true, correlation) ->
  +                        correlation.Remove system.Name |> ignore<bool>
  +                        this.CorrelationsChangedInternal.[entityId] <- correlation
  +                    | (false, _) ->
  +                        this.CorrelationsChangedInternal.[entityId] <- this.EmptyCorrelation
                       true
                   else false
               | _ -> failwith ("Could not find expected system '" + Unchecked.defaultof<'c>.TypeName + "'.")
  
positive.code:     let systemsUnordered = dictPlus<string, 'w System> StringComparer.Ordinal []
      let systemsOrdered = List<string * 'w System> ()
      let correlations = dictPlus<Guid, string HashSet> HashIdentity.Structural []
      let pipedValues = ConcurrentDictionary<Guid, obj> ()
      let emptySystemNames = hashSetPlus<string> StringComparer.Ordinal [] // the empty systems dict to elide allocation on IndexSystems
  
      do this.RegisterSystemGeneralized systemGlobal |> ignore<'w System>
  
      member private this.BoxCallback<'a> (callback : SystemCallback<'a, 'w>) =
          let boxableCallback = fun (evt : SystemEvent<obj, 'w>) system ->
  
negative.code:             match this.TryIndexSystem<'c, SystemHierarchical<'c, 'w>> () with
              | Some system ->
                  let _ = system.RegisterHierarchical comp nodeId entityId
                  match this.CorrelationsInternal.TryGetValue entityId with
                  | (true, correlation) ->
                      correlation.Add system.Name |> ignore<bool>
                      this.CorrelationsChangedInternal.[entityId] <- correlation
                  | (false, _) ->
                      this.CorrelationsInternal.Add (entityId, HashSet.singleton StringComparer.Ordinal system.Name)
                      this.CorrelationsChangedInternal.[entityId] <- this.EmptyCorrelation
              | None -> failwith ("Could not find expected system '" + Unchecked.defaultof<'c>.TypeName + "'.")
  
          member this.UnregisterHierarchical<'c when 'c : struct and 'c :> 'c Component> nodeId entityId =
              match this.TryIndexSystem<'c, SystemHierarchical<'c, 'w>> () with
              | Some system ->
                  if system.UnregisterHierarchical nodeId entityId this then
                      match this.CorrelationsInternal.TryGetValue entityId with
                      | (true, correlation) ->
                          correlation.Remove system.Name |> ignore<bool>
                          this.CorrelationsChangedInternal.[entityId] <- correlation
                      | (false, _) ->
                          this.CorrelationsChangedInternal.[entityId] <- this.EmptyCorrelation
                      true
                  else false
              | _ -> failwith ("Could not find expected system '" + Unchecked.defaultof<'c>.TypeName + "'.")
  