if (pleaseStopFlag) break;
synchronized (this) {
  public void run() {    try {      while (true) {	if (pleaseStopFlag) // the buffering plugin is about to be moved/suspended stop!	  break;	synchronized (this) {	  // grab all the tasks that have come in recently	  notYetDispatched.addAll (bufferedTasks);	  bufferedTasks.clear ();	  int tasksLeft = notYetDispatched.size (); 	  if (anyTasksLeft ()) {	    long waitTime = getWaitTime ();	    if (waitTime > 0) {			      if (logger.isDebugEnabled()) 		logger.debug ("" + this + " listener " + myPlugin.getName () + 			      " super has " + tasksLeft + " tasks left, waiting " + waitTime);	      wait (waitTime);	    }	    else if (logger.isDebugEnabled()) 	      logger.debug ("" + this + " listener " + myPlugin.getName () + " not waiting");	  }	  else {	    if (logger.isDebugEnabled()) 	      logger.debug ("" + this + " listener " + myPlugin.getName () +			    " waiting with nothing to do.  Has " + tasksLeft + ".");	    wait ();	  }	}	checkBuffer (notYetDispatched);      }    }     catch (Exception e) {      e.printStackTrace();      throw new UTILPluginException(e.getMessage());    }  }