a CloseUserProfileCommand, I would want to remove the userProfileVO from the UserProfileProxy collection, de-register the mediator (and any other child mediators), etc. etc. but I'd like to keep the removal of the child tab in that command as well, keeping everything in one place.
Multiple events (menu clicks, keypresses etc can send the same note, but it doesn't have to trigger a command.
I would have the mediator responsible for the tabnavigator be interested instead of registering a command. It is the sole touchpoint in the app for that component, so have it do the removal of the tabnav child.
Then have that view component's mediator remove itself by listening to its REMOVED event.
I'd also have the mediator make a cal to the proxy to remove the item being closed. The mediator knows the item and can talk to the proxy.
So a button click, menu selection or a keypress led to the note that caused the tabnavmediator to remove the child, which sent a REMOVED event to its mediator which told the proxy to remove the associated item from its collection, and then de-registered itself.