Surgical Extraction

Surgical Extraction (Choose target card in a graveyard other than a basic land card. Search its owner's graveyard, hand, and library for any number of cards with the same name as that card and exile them. Then that player shuffles his or her library.) is a tricky card to code. I want to explore a few solutions and to know what you think about them.
The last problem is how to "reveal" all cards in a zone. I know i can loop over all cards with EvaluateObjects() and GetNthEvaluatedObject() but is a PITA to watch it over a whole library.
How you think this may be done?
- Try 1: A filter with multiple zones.
This is a no go, Object():GetFilter():SetZone() does not allow multiple calls. - Try 2: Loop over all zones copying all cards to a data chest, and make a selection from it.
This is a no go too, when using a data chest as a source for a prompt the filter is ignored. - Try 3: Use GuidedReveal() and RemoveFromGame() for each copy while looping across all zones.
This works, but is not quite exactly what the card should do. I think a great part of Surgical Extraction's value reside in the ability to look at your oponent hand and library. - Try 4: Filter each zone independently allowing to remove from each one at a time.
This also works, and is a bit closer to what's required, the problem is only filtered cards are shown unless "Browser the entire library" is enabled.
The last problem is how to "reveal" all cards in a zone. I know i can loop over all cards with EvaluateObjects() and GetNthEvaluatedObject() but is a PITA to watch it over a whole library.
How you think this may be done?