void fireSucceeded(T value) {
   TaskEvent<T> event = TaskEvent.succeeded(task, value);
   LOG.debug("firing succeeded event: {}", event);
   for (TaskListener<? super T> listener : listeners) {
     listener.succeeded(event);
   }
 }