anchor.diff:      return new ScheduleError(schedule, error, stackTrace, cause, task);
     }
   
  -  ScheduleError(this.schedule, error, stackTrace, AsyncError cause, this.task)
  -    : super.withCause(error, stackTrace, cause);
  +  ScheduleError(Schedule schedule, error, stackTrace, AsyncError cause,
  +      this.task)
  +      : super.withCause(error, stackTrace, cause),
  +        this.schedule = schedule,
  +        this._scheduleWasDone = schedule.done;
   
     String toString() {
       var result = new StringBuffer();
  
positive.code:     if (task != null) {
        result.add('Error detected during task in queue "${task.queue}":\n');
        result.add(task.generateTree());
      } else if (schedule.done) {
        result.add('Error detected after all tasks in the queue had finished.');
      } else {
        result.add('Error detected before the schedule started running');
      }
  
      return result.toString();
  
negative.code:   /// there was no such task.
    final Task task;
  
    /// Whether the schedule was finished executing at the time the error was
    /// detected.
    final bool _scheduleWasDone;
  
    /// Creates a new [ScheduleError] wrapping [error]. The metadata in
    /// [AsyncError]s and [ScheduleError]s will be preserved.
    factory ScheduleError.from(Schedule schedule, error, {stackTrace,
  