anchor.diff:              archetype.Unregister archetypeSlot.ArchetypeIndex
               state
           | (false, _) -> state
  +
  +    member this.RegisterEntitiesPlus elideEvents count comps archetypeId state =
  +
  +        // get archetype
  +        let archetype =
  +            match archetypes.TryGetValue archetypeId with
  +            | (true, archetype) -> archetype
  +            | (false, _) -> createArchetype archetypeId
  +
  +        // register entities to archetype
  +        let mutable state = state
  +        let entitys = SegmentedArray.zeroCreate count
  +        for i in 0 .. dec count do
  +            let entity = this.Entity
  +            let archetypeIndex = archetype.Register comps
  +            archetypeSlots.Add (entity.EntityId, { ArchetypeIndex = archetypeIndex; Archetype = archetype })
  +            entitys.[i] <- entity
  +            if not elideEvents then
  +                for compName in archetype.Stores.Keys do
  +                    let eventData = { EcsEntity = entity; ComponentName = compName }
  +                    state <- this.Publish<EcsRegistrationData, obj> (EcsEvents.Unregistering entity compName) eventData (state :> obj) :?> 's
  +
  +        // fin
  +        (entitys, state)
  +
  +    member this.RegisterEntities elideEvents count comps archetypeId state =
  +        let comps = dictPlus StringComparer.Ordinal (Seq.map (fun comp -> (getTypeName comp, comp)) comps)
  +        this.RegisterEntitiesPlus elideEvents count comps archetypeId state
  +        this.RegisterEntitiesPlus elideEvents count comps archetypeId state
   
       member this.RegisterQuery (query : Query) =
           for archetypeEntry in archetypes do
  
positive.code:         let archetypeIndex = archetype.Register comps
          archetypeSlots.Add (entity.EntityId, { ArchetypeIndex = archetypeIndex; Archetype = archetype })
          let mutable state = state
          if not publishEvents then
              for compName in archetype.Stores.Keys do
                  let eventData = { EcsEntity = entity; ComponentName = compName }
                  state <- this.Publish<EcsRegistrationData, obj> (EcsEvents.Unregistering entity compName) eventData (state :> obj) :?> 's
          (entity, state)
  
      member this.RegisterEntitiesPlus publishEvents count comps archetypeId state =
  
          // get archetype
          let archetype =
              match archetypes.TryGetValue archetypeId with
              | (true, archetype) -> archetype
              | (false, _) -> createArchetype archetypeId
  
          // register entities to archetype
          let mutable state = state
          let entitys = SegmentedArray.zeroCreate count
          for i in 0 .. dec count do
              let entity = this.Entity
              let archetypeIndex = archetype.Register comps
              archetypeSlots.Add (entity.EntityId, { ArchetypeIndex = archetypeIndex; Archetype = archetype })
              entitys.[i] <- entity
              if publishEvents then
                  for compName in archetype.Stores.Keys do
                      let eventData = { EcsEntity = entity; ComponentName = compName }
                      state <- this.Publish<EcsRegistrationData, obj> (EcsEvents.Unregistering entity compName) eventData (state :> obj) :?> 's
  
          // fin
          (entitys, state)
  
      member this.RegisterEntities publishEvents count comps archetypeId state =
          let comps = dictPlus StringComparer.Ordinal (Seq.map (fun comp -> (getTypeName comp, comp)) comps)
          this.RegisterEntitiesPlus publishEvents count comps archetypeId state
  
      member this.UnregisterEntity (entity : EcsEntity) (state : 's) =
          match archetypeSlots.TryGetValue entity.EntityId with
  
negative.code:     member this.UnregisterComponent<'c, 's when 'c : struct and 'c :> 'c Component> (entity : EcsEntity) (state : 's) =
          this.UnregisterComponentPlus<'c, 's> typeof<'c>.Name entity state
  
      member this.RegisterEntity elideEvents comps archetypeId state =
          let archetype =
              match archetypes.TryGetValue archetypeId with
              | (true, archetype) -> archetype
  