anchor.diff:          | (true, archetypeSlot) ->
               let archetype = archetypeSlot.Archetype
               let comps = archetype.GetComponents archetypeSlot.ArchetypeIndex
  -            let eventData = { EntityId = entityRef.EntityId; ContextName = termName }
  +            let eventData = { EntityRef = entityRef; ContextName = termName }
               let state = this.Publish<RegistrationData, obj> EcsEvents.Unregistering eventData (state :> obj) :?> 's
               archetype.Unregister archetypeSlot.ArchetypeIndex
               archetypeSlots.Remove entityRef.EntityId |> ignore<bool>
  
positive.code:     member this.Register<'c, 's when 'c : struct and 'c :> 'c Component> (comp : 'c) (state : 's) =
          this.Ecs.RegisterComponent<'c, 's> comp this state
  
      member this.GetNamed<'c when 'c : struct and 'c :> 'c Component> compName =
          let archetypeSlot = this.Ecs.IndexArchetypeSlot this
          let stores = archetypeSlot.Archetype.Stores
          let store = stores.[compName] :?> 'c Store
          let i = archetypeSlot.ArchetypeIndex
          &store.[i]
  
      member this.Get<'c when 'c : struct and 'c :> 'c Component> () =
          this.GetNamed<'c> typeof<'c>.Name
  
      member this.SetNamed<'c when 'c : struct and 'c :> 'c Component> compName (comp : 'c) =
          let archetypeSlot = this.Ecs.IndexArchetypeSlot this
          let stores = archetypeSlot.Archetype.Stores
          let store = stores.[compName] :?> 'c Store
          let i = archetypeSlot.ArchetypeIndex
          store.[i] <- comp
  
      member this.Set<'c when 'c : struct and 'c :> 'c Component> (comp : 'c) =
          this.SetNamed<'c> typeof<'c>.Name comp
  
      member this.Index (compName, state : 's, statement : Statement<'c, 's>) =
          let archetypeSlot = this.Ecs.IndexArchetypeSlot this
          let stores = archetypeSlot.Archetype.Stores
          let store = stores.[compName] :?> 'c Store
          let i = archetypeSlot.ArchetypeIndex
          statement.Invoke (&store.[i], state)
  
      member this.Index (compName, comp2Name, state : 's, statement : Statement<'c, 'c2, 's>) =
          let archetypeSlot = this.Ecs.IndexArchetypeSlot this
          let stores = archetypeSlot.Archetype.Stores
          let store = stores.[compName] :?> 'c Store
  
negative.code:         '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.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
  