support.getBlackboardService().closeTransaction(false);
support.getBlackboardService().closeTransactionDontReset();
  protected void blackboardChanged() {    try {      support.getBlackboardService().openTransaction();      Set toRemove = new HashSet (); // to avoid concurrent mod error      if (planElementSubscription.hasChanged()) {        boolean wasEmpty = true;        Collection changedItems = planElementSubscription.getChangedCollection();        synchronized (sentTasks) {          for (Iterator iter2 = changedItems.iterator (); iter2.hasNext();) {	    if (support.getLog().isDebugEnabled ())	      support.getLog().debug ("GLMStimulatorWorker.blackboard changed - found changed plan elements.");            wasEmpty = false;            PlanElement pe = (PlanElement) iter2.next();	    if (support.getLog().isDebugEnabled ())	      support.getLog().debug ("GLMStimulatorWorker.blackboard PE " + pe.getUID () + " changed.");            Task task = pe.getTask();            Date timeSent = (Date) sentTasks.get(task);            if (timeSent != null) {              recordTime(task.getUID().toString(), timeSent);            }            sentTasks.remove(task);            rescindTasks.add(task);          }	  if (support.getLog().isDebugEnabled ())	    support.getLog().debug ("GLMStimulatorWorker.blackboard changed - notifying.");          synchronized (this) {            sentTasks.notify();          }        }      }    } catch (Exception exc) {      support.getLog().error ("Could not publish tasks.", exc);    }    finally{      support.getBlackboardService().closeTransaction(false);    }  }