anchor.diff:          override this.Correlation = correlation
   
           override this.Filter entityId =
  -            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 indexOpt = system.TryIndexCorrelatedToI entityId
               let indexOpt2 = system2.TryIndexCorrelatedToI entityId
               let indexOpt3 = system3.TryIndexCorrelatedToI entityId
  
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:             | None -> failwith ("Could not find expected system '" + systemName + "'.")
  
  /// A delegate that enables passing of values byref.
  type Iter<'c when
              'c : struct and 'c :> 'c Component> =
              delegate of 'c byref -> unit
  
  /// A delegate that enables passing of values byref.
  type Iter<'c, 'c2 when
             'c : struct and 'c :> 'c Component and
             'c2 : struct and 'c2 :> 'c2 Component> =
              delegate of 'c byref * 'c2 byref -> unit
  
  /// A delegate that enables passing of values byref.
  type Iter<'c, 'c2, 'c3 when
              'c : struct and 'c :> 'c Component and
              'c2 : struct and 'c2 :> 'c2 Component and
              'c3 : struct and 'c3 :> 'c3 Component> =
              delegate of 'c byref * 'c2 byref * 'c3 byref -> unit
  
  /// A delegate that enables passing of values byref.
  type Iter<'c, 'c2, 'c3, 'c4 when
              'c : struct and 'c :> 'c Component and
              'c2 : struct and 'c2 :> 'c2 Component and
              'c3 : struct and 'c3 :> 'c3 Component and
              'c4 : struct and 'c4 :> 'c4 Component> =
              delegate of 'c byref * 'c2 byref * 'c3 byref * 'c4 byref -> unit
  
  /// A delegate that enables passing of values byref.
  type Iter<'c, 'c2, 'c3, 'c4, 'c5 when
              'c : struct and 'c :> 'c Component and
              'c2 : struct and 'c2 :> 'c2 Component and
              'c3 : struct and 'c3 :> 'c3 Component and
              'c4 : struct and 'c4 :> 'c4 Component and
              'c5 : struct and 'c5 :> 'c5 Component> =
              delegate of 'c byref * 'c2 byref * 'c3 byref * 'c4 byref * 'c5 byref -> unit
  
  /// A delegate that enables passing of values byref.
  type Iter<'c, 'c2, 'c3, 'c4, 'c5, 'c6 when
              'c : struct and 'c :> 'c Component and
              'c2 : struct and 'c2 :> 'c2 Component and
              'c3 : struct and 'c3 :> 'c3 Component and
              'c4 : struct and 'c4 :> 'c4 Component and
              'c5 : struct and 'c5 :> 'c5 Component and
              'c6 : struct and 'c6 :> 'c6 Component> =
              delegate of 'c byref * 'c2 byref * 'c3 byref * 'c4 byref * 'c5 byref * 'c6 byref -> unit
  
  /// A delegate that enables passing of values byref.
  type Iter<'c, 'c2, 'c3, 'c4, 'c5, 'c6, 'c7 when
              'c : struct and 'c :> 'c Component and
              'c2 : struct and 'c2 :> 'c2 Component and
              'c3 : struct and 'c3 :> 'c3 Component and
              'c4 : struct and 'c4 :> 'c4 Component and
              'c5 : struct and 'c5 :> 'c5 Component and
              'c6 : struct and 'c6 :> 'c6 Component and
              'c7 : struct and 'c7 :> 'c7 Component> =
              delegate of 'c byref * 'c2 byref * 'c3 byref * 'c4 byref * 'c5 byref * 'c6 byref * 'c7 byref -> unit
  
  /// An ECS query.
  type Query<'c, 'w when
  