case Event.VIEW_CHANGE :
//if this is channel's first view and its the only member of the group then the
//goal is to pass BLOCK,VIEW,UNBLOCK to application space on the same thread as VIEW.
View newView = (View) evt.getArg();
boolean firstView = onViewChange(newView);
boolean singletonMember = newView.size()==1 && newView.containsMember(localAddress);
if(firstView && singletonMember){
passUp(evt);
synchronized (blockMutex)
{
isBlockingFlushDown = false;