I'm afraid not. The WorkList is reentrant as any partial function executed here can modify the list itself. This includes adding, removing, and removing itself from the partial function. listIterator only handles removing the current entry or we'll run into a ConcurrentModificationException. I've looked at my options and resorted back to implementing my own (which turns out not such a big deal). Please let me know if you find something better.