I believe it has been said that trashing a bunch of cards in one go is an atomic operation, it can't be interrupted. Same with discarding cards with Cellar, Inn, etc... I just don't remember the exact ruling however.
This matters of course for cards like Steward, Forge etc in combination with on-card on-trash abilities.
What happens is that you trash a bunch of cards in one go and then get to activate the on-trash ability of say, Rats.
Problem is that by this time Rats isn't necessarily the top card of the trash pile so you might forget to activate it.
Maybe in real life a good way to solve this problem is to set aside all of the "trashed" cards first (in a way that you can see each one), activate their on-trash abilities and after you've resolved them, finally move them to the actual trash pile. But I'm just not sure whether this conflicts with the lose-track rule.
The infamous lose-track rule specifies that a card can't do something to another card if that other card isn't the place the first card expects it to be anymore. But here this rule doesn't apply for two reasons, it seems:
1. There is no card trying to do something to another card, Rats is trying to act on account of its own trashing
2. Rats is still where it expects to be, in the trash, it's just not necessarily the top card, but it doesn't specify it has to be
The same arguments can be made for Inn and Tunnel. Luckily, the top card of your discard pile doesn't matter, same as the top card of the trash pile. This means that you could discard a Tunnel (first) and a Copper (second, so on top) through Inn, pull Tunnel out from the discard, reveal it, grab a Gold and put it on top of the Copper and finally put Tunnel back on top. Again, this can be solved by temporarily putting the "discarded" cards aside so you don't "mistakenly" reveal some Tunnel that was already in there (but not discarded by Inn).
Some reflections on this?