rem: iter = find(Messengers.begin(), Messengers.end(), Messenger); if (iter != Messengers.end()) { Messengers.erase(iter); if (Messengers.empty()) {
add: iter = find(messengers.begin(), messengers.end(), messenger); if (iter != messengers.end()) { messengers.erase(iter); if (messengers.empty())
context: status_t _ObserverList::StopObserving(const BMessenger& Messenger,									  unsigned long what){	// ???:	What if you call StartWatching(MyMsngr, aWhat) and then call	//		StopWatchingAll(MyMsnger)?  Will MyMsnger be removed from the aWhat	//		watcher list?  For now, we'll assume that they're discreet lists	//		which do no cross checking; i.e., MyMsnger would *not* be removed in	//		this scenario.	vector<BMessenger>& Messengers = fMessengerMap[what];	vector<BMessenger>::iterator iter;	iter = find(Messengers.begin(), Messengers.end(), Messenger);	if (iter != Messengers.end())	{		Messengers.erase(iter);		if (Messengers.empty())		{			fMessengerMap.erase(what);		}		return B_OK;	}	return B_BAD_HANDLER;}