Not clear to me how that's object-oriented. You're not sending a "put yourself in the trashcan" message to the document, or sending a "pull the document to yourself" message to the trashcan. If anything, you're invoking the environment's "drag" function with two arguments, "document" and "trashcan"; that's object-oriented only insofar as the environment contains every function and can be sent messages to invoke them.
To continue the over-analysis in good faith: I think the trashcan example points out the inheritance of draggability. Any file object in a directory gets it by default, without having to think too much about it.
Then the trashcan inherits from a directory, making it able to have things dropped on it. But it overwrites the action taken from movement to deletion. That maps "nicely" onto the human mind.
> If anything, you're invoking the environment's "drag" function with two arguments, "document" and "trashcan";
A perfectly valid alternative description. But having a do-it-all environment with every function doesn't sound OOP to me.