private void notifyDependents(Task completed) {
    // log().debug(String.format("Task %s completed!", completed));
    completed.onComplete();

    final Set<Task> dependents = completed.getDependents();
    for (Task dependent : dependents) {
      dependent.doCompletePrerequisite(completed);
      if (dependent.isReady()) {
        // log().debug(String.format("Task %s %s ready.", dependent, dependent.isReady() ? "is" :
        // "is not"));
      }

      dependent.submitIfReady();
    }

    // log().debug(String.format("CLEAN: removing dependents of %s", completed));
    completed.clearDependents();
  }