Return a snapshot rather than the actual collection, since the caller can't use our lock to protect our collection.  Hold the lock during snapshot creation since we're enumerating the collection.