anchor.diff:    String _loggerName;
     String _messageExact;
     RegExp _messageRegex;
  -  String _rawMatcher;  // The actual text the person wrote.
  +  // In the case of an exact or regex matcher, the user entered a possibly
  +  // escaped string. For instance, _messageRegex = new RegExp("\t\n"), which
  +  // means the user entered /\t\n/. _rawMatcher contains that text, with a
  +  // literal backslash and so forth.
  +  String _rawMatcher;
     Level _minLevel;
     Level _exactLevel;
     String _fileName;
  
positive.code:   StreamSubscription<LogRecord> _sub;
  
    LogViewer.created() : super.created() {
      // It's a bit annoying to listen to all modifications related to this object
      // and start listening there. Ideally we'd have a readonly log to listen to.
      // Also ideally we'd be able to listen to the appropriate logger here and
      // be done. But this shouldn't matter without a huge volume of log messages.
      this.changes.listen((change) {
        if (_oldLog == log) {
          return;
  
negative.code:     var id = int.parse(elem.id, onError: (e) => -1);
      filters.removeWhere((filter) => filter.id == id);
  
      // TODO: stay scrolled to roughly the same place.
      messages.clear();
      messages.addAll(_logs.where((record) => !filters.any((filter) => !filter.match(record))));
    }
  