while((m=entry.received_msgs.remove()) != null) passUp(new Event(Event.MSG, m)); }
while((m=entry.received_msgs.remove()) != null) passUp(new Event(Event.MSG, m)); return true;
    private void handleDataReceived(Object sender, long seqno, boolean first, Message msg) {        Entry    entry;        Message  m;        if(trace)            log.trace(new StringBuffer("[").append(local_addr).append("] <-- DATA(").append(sender).                      append(": #").append(seqno).append(", first=").append(first));        synchronized(connections) {            entry=(Entry)connections.get(sender);            if(entry == null) {                entry=new Entry();                connections.put(sender, entry);            }        }        synchronized(entry) {            if(entry.received_msgs == null) {                if(first)                    entry.received_msgs=new AckReceiverWindow(seqno);                else {                    if(operational) {                        if(warn)                            log.warn(sender + "#" + seqno + " is not tagged as the first message sent by " + sender +                                     "; however, the table for received messages from " + sender + " is null. We probably " +                                     "haven't received the first message from " + sender + ". Discarding message: " +                                     msg.toString() + ", headers (excluding UnicastHeader): " + msg.getHeaders());                        return;                    }                }            }        }        if(entry.received_msgs != null) {            entry.received_msgs.add(seqno, msg);            // Try to remove (from the AckReceiverWindow) as many messages as possible as pass them up            while((m=entry.received_msgs.remove()) != null)                passUp(new Event(Event.MSG, m));        }    }