anchor.diff:  /// Identifies an archetype.
   and ArchetypeId (terms : Map<string, Term>) =
   
  +    let terms = Map.add (nameof EntityId) (Intra (nameof EntityId, typeof<EntityId>)) terms
  +
       let hashCode = hash terms // OPTIMIZATION: hash is cached for speed
   
       new (intraComponents, subterms : Map<string, Term>) =
  
positive.code:         hashCode
  
      member this.AddTerm termName term =
          ArchetypeId (Map.add termName term terms)
  
      member this.RemoveTerm termName =
          ArchetypeId (Map.remove termName terms)
  
      static member equals (left : ArchetypeId) (right : ArchetypeId) =
  
negative.code:     do
          let storeTypeGeneric = typedefof<EntityId Store>
          for termEntry in archetypeId.Terms do
              if termEntry.Key <> nameof EntityId then
                  match termEntry.Value with
                  | Intra (name, ty)
                  | Extra (name, ty, _) ->
                      let storeType = storeTypeGeneric.MakeGenericType [|ty|]
                      let store = Activator.CreateInstance (storeType, name) :?> Store
                      stores.[name] <- store
                  | _ -> ()
  
      member this.Id = archetypeId
      member this.Length = freeIndex
  