anchor.diff:  /// Filter conditions on tags.
   class TagsPredicate {
     /// tag -> {true = required | false = prohibited}
  -  final _values = <String?, bool>{};
  +  final _values = <String, bool>{};
   
     TagsPredicate({List<String>? requiredTags, List<String>? prohibitedTags}) {
       requiredTags?.forEach((tag) => _values[tag] = true);
  
positive.code:   }
  
    /// Returns the list of tag values that can be passed to search service URL.
    List<String?> toQueryParameters() {
      return _values.entries.map((e) => e.value ? e.key : '-${e.key}').toList();
    }
  
    /// Returns the second part of the tags matching [prefix] and [value].
    List<String> tagPartsWithPrefix(String prefix, {bool? value}) {
      return _values.keys
          .where((k) =>
              k!.startsWith('$prefix:') && (value == null || _values[k] == value))
          .map((k) => k!.substring(prefix.length + 1))
          .toList();
    }
  }
  
  
negative.code:     return p;
    }
  
    /// Evaluate this predicate against the list of supplied [tags].
    /// Returns true if the predicate matches the [tags], false otherwise.
    bool matches(List<String> tags) {
  