msgs.notify();
msgs.notifyAll();
    public void remove(Address obj) {	Long  key;	Entry entry;	synchronized(msgs) {	    for (Enumeration e = msgs.keys(); e.hasMoreElements();) {		key   = (Long)e.nextElement();		entry = (Entry)msgs.get(key);		synchronized(entry) {		    //if (((Boolean)entry.senders.remove(obj)).booleanValue()) entry.num_received--;		    //if (!entry.allReceived()) continue;		    Boolean received = (Boolean)entry.senders.remove(obj);		    if(received == null) continue; // suspected member not in entry.senders ?		    if (received.booleanValue()) entry.num_received--;		    if (!entry.allReceived()) continue;		}		synchronized(stable_msgs) {		    entry.cancel();		    msgs.remove(key);		    stable_msgs.add(key);		}		// wake up waitUntilAllAcksReceived() method		msgs.notify();	    }	}    }