anchor.diff:    }
   
     /// Returns the list of tag values that can be passed to search service URL.
  -  List<String?> toQueryParameters() {
  +  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();
     }
   }
   
  
positive.code: 
    String? get sdk {
      final values = tagsPredicate._values.entries
          .where((e) => e.key!.startsWith('sdk:') && e.value == true)
          .map((e) => e.key!.split(':')[1]);
      return values.isEmpty ? null : values.first;
    }
  
  
negative.code: /// Filter conditions on tags.
  class TagsPredicate {
    /// tag -> {true = required | false = prohibited}
    final _values = <String, bool>{};
  
    TagsPredicate({List<String>? requiredTags, List<String>? prohibitedTags}) {
      requiredTags?.forEach((tag) => _values[tag] = true);
  