anchor.diff:          'c5 : struct and 'c5 :> 'c5 Component and
           'c6 : struct and 'c6 :> 'c6 Component>
           (state : 's, statement : Statement<'c, 'c2, 'c3, 'c4, 'c5, 'c6, 's>) =
  -        this.Index (typeof<'c>.Name, typeof<'c2>.Name, typeof<'c3>.Name, typeof<'c4>.Name, typeof<'c5>.Name, typeof<'c6>.Name, state, statement)
  -
  -    member this.Index<'c, 'c2, 'c3, 'c4, 'c5, 'c6, 'c7, 's when
  +        this.Window (typeof<'c>.Name, typeof<'c2>.Name, typeof<'c3>.Name, typeof<'c4>.Name, typeof<'c5>.Name, typeof<'c6>.Name, state, statement)
  +
  +    member this.Window<'c, 'c2, 'c3, 'c4, 'c5, 'c6, 'c7, 's when
           'c : struct and 'c :> 'c Component and
           'c2 : struct and 'c2 :> 'c2 Component and
           'c3 : struct and 'c3 :> 'c3 Component and
  
positive.code:                     let archetypeIndex = archetype.Register comps
                      archetypeSlots.Add (entityRef.EntityId, { ArchetypeIndex = archetypeIndex; Archetype = archetype })
                      state
              let eventData = { EntityId = entityRef.EntityId; ContextName = compName }
              this.Publish<RegistrationData, obj> EcsEvents.Register eventData (state :> obj) :?> 's
  
      member this.RegisterComponent<'c, 's when 'c : struct and 'c :> 'c Component> (comp : 'c) (entityRef : EntityRef) (state : 's) =
  
negative.code:         let i = archetypeSlot.ArchetypeIndex
          statement.Invoke (&store.[i], &store2.[i], &store3.[i], &store4.[i], &store5.[i], &store6.[i], state)
  
      member this.Window (compName, comp2Name, comp3Name, comp4Name, comp5Name, comp6Name, comp7Name, state : 's, statement : Statement<'c, 'c2, 'c3, 'c4, 'c5, 'c6, 'c7, 's>) =
          let archetypeSlot = this.Ecs.IndexArchetypeSlot this
          let stores = archetypeSlot.Archetype.Stores
          let store = stores.[compName] :?> 'c Store
  