anchor.diff:  
       let cache = OrderedDictionary<Guid, struct (int * int * int * int * int * int * int)> HashIdentity.Structural
       let correlation = hashSetPlus<string> StringComparer.Ordinal [typeof<'c>.Name; typeof<'c2>.Name; typeof<'c3>.Name; typeof<'c4>.Name; typeof<'c5>.Name; typeof<'c6>.Name; typeof<'c7>.Name]
  +    let system = ecs.IndexSystem<'c, SystemCorrelated<'c, 'w>> ()
  +    let system2 = ecs.IndexSystem<'c2, SystemCorrelated<'c2, 'w>> ()
  +    let system3 = ecs.IndexSystem<'c3, SystemCorrelated<'c3, 'w>> ()
  +    let system4 = ecs.IndexSystem<'c4, SystemCorrelated<'c4, 'w>> ()
  +    let system5 = ecs.IndexSystem<'c5, SystemCorrelated<'c5, 'w>> ()
  +    let system6 = ecs.IndexSystem<'c6, SystemCorrelated<'c6, 'w>> ()
  +    let system7 = ecs.IndexSystem<'c7, SystemCorrelated<'c7, 'w>> ()
       
       member this.Ecs = ecs
       member this.Cache = cache
  
positive.code:             
      let cache = OrderedDictionary<Guid, struct (int * int * int * int)> HashIdentity.Structural
      let correlation = hashSetPlus<string> StringComparer.Ordinal [typeof<'c>.Name; typeof<'c2>.Name; typeof<'c3>.Name; typeof<'c4>.Name]
      
      member this.Ecs = ecs
      member this.Cache = cache
  
negative.code:         override this.Correlation = correlation
  
          override this.Filter entityId =
              let indexOpt = system.TryIndexCorrelatedToI entityId
              let indexOpt2 = system2.TryIndexCorrelatedToI entityId
              if  indexOpt > -1 && indexOpt2 > -1 then
  