Is there a specific reason why we need both IdentifierTable and SelectorTable? Why not just have IdentifierTable use SelectorTable as an internal data structure, and have all selector creation go through IdentifierTable? It seems to buy us nothing that have two separate concepts from the perspective of clients.