I just noticed the implementation of ``symbolAt`` is not safe, i.e., it can return a ``FoundSymbol`` that wraps a ``symbol``. Accessing that ``symbol`` outisde of the PC Thread can lead to incorrectness. I can see that in the method ``names`` you are executing calls inside the PC Thread, which is good, but I'd like to have this enforced in the code, rather than having it as a convention (it's hard to forget).

I'm thinking maybe we could change ``symbolAt`` into a ``withSymbolAt`` that takes a closure. If you find a symbol, the closure will be run inside the PC Thread. Not sure if this works in general, or we need to abstract things more than that, but I feel it would be a better approach than the current one. If you agree, could you please file a ticket, so that we don't forget about it.