anchor.diff:        {String from: "",
         String to: "",
         String alias,
  -      Replies replies: const Replies.none()})
  +      Replies replies: const _NoReplies()})
         : this.dialog = dialog,
           this.from = from,
           this.to = to,
  
positive.code:         .add((e) => e.dialogEvent.to == forDialogTo);
      if (_notNull(forDialogFrom)) conditions
          .add((e) => e.dialogEvent.from == forDialogFrom);
      return replies.firstWhere((e) => conditions.every((c) => c(e)));
    }
  
  
negative.code:           {String from,
            String to,
            Duration delay: Duration.ZERO,
            Replies replies: const _NoReplies()}) =>
        _run.emit(new DialogEvent(dialog, from: from, to: to, replies: replies),
            delay: delay);
  
    Future<ReplyEvent> reply(String reply, DialogEvent dialogEvent) {
      if (dialogEvent.replies._used != null) {
        throw new StateError("Cannot reply to a dialog more than once; previous "
            "reply was ${dialogEvent.replies._used}.");
      }
  
      dialogEvent.replies._used = reply;
  
      return _run.emit(new ReplyEvent(reply, dialogEvent));
    }
  
    Future<NarrationEvent> narrate(String narration,
            {Duration delay: Duration.ZERO}) =>
  