Nit - does this honor the replace semantics you normally get with an indexer?  Adding usually throws on duplicates while updating via indexers doesn't.