if (w == null) return;
if (ActiveSubscriptionObject.deferCommit) {  if (!w.isPropagatingToSubtasks() ) { for (Enumeration e = w.getTasks(); e.hasMoreElements(); ) { NewTask wfstask = (NewTask) e.nextElement(); Blackboard.getTracker().checkpoint(commit, wfstask, "getParentTask"); } } }  if (!commit) return;
  public void removingFromBlackboard(Subscriber s) {    Task t = getTask();    ((TaskImpl)t).privately_resetPlanElement();    Workflow w = getWorkflow();    if (w == null) return; // if already disconnected...    if (w.isPropagatingToSubtasks() ) { // if we're auto-propagating      WorkflowImpl wi = (WorkflowImpl) w;            // rescind all subtasks of the workflow      List sts = wi.clearSubTasks();    // atomic get and clear the list      ListIterator it = sts.listIterator();        while (it.hasNext()) {        Task asub = (Task) it.next();        s.publishRemove(asub);      }    } else {      // we're not auto-propagating      // disconnect the WF from the parent task      ((NewWorkflow)w).setParentTask(null);      for (Enumeration e = w.getTasks(); e.hasMoreElements(); ) {        NewTask wfstask = (NewTask) e.nextElement();        wfstask.setParentTask(null);      }      // the plugin should reattach this workflow to a parent task.     }  }