anchor.diff:              match this.TryIndexSystem<'c, SystemCorrelated<'c, 'w>> () with
               | Some system ->
                   let componentRef = system.RegisterCorrelated comp entityId this
  -                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
                   componentRef
               | None -> failwith ("Could not find expected system '" + Unchecked.defaultof<'c>.TypeName + "'.")
   
  
positive.code:             match this.TryIndexSystem<'c, SystemCorrelated<'c, 'w>> () with
              | Some system ->
                  if system.UnregisterCorrelated entityId this then
                      match this.Correlations.TryGetValue entityId with
                      | (true, correlation) -> correlation.Remove system.Name |> ignore<bool>
                      | (false, _) -> ()
                      true
                  else false
              | None -> failwith ("Could not find expected system '" + Unchecked.defaultof<'c>.TypeName + "'.")
  
negative.code:         match correlations.TryGetValue entityId with
          | (true, systemNames) -> systemNames
          | (false, _) -> emptySystemNames
  
      member this.IndexEntitiesChanged systemNames =
          correlationsChanged |>
          Seq.filter (fun kvp -> kvp.Value.IsSubsetOf systemNames) |>
          Seq.map (fun kvp -> kvp.Key)
  
      member this.IndexEntities systemNames =
          correlations |>
  