anchor.diff:  import 'package:angular_components/utils/async/async.dart';
   
   /// Formats [value] as a lowercase string without spaces.
  -String _stringFormatSuggestion<T>(T value) =>
  -    '$value'.replaceAll(' ', '').toLowerCase();
  +String _stringFormatSuggestion(String value) =>
  +    value.replaceAll(' ', '').toLowerCase();
  +
  +ItemRenderer<T> _defaultRenderer<T>(ItemRenderer<String> sanitizeString) =>
  +    new CachingItemRenderer<T>((T value) => sanitizeString(value.toString()))
  +        .call;
   
   typedef bool StringSuggestionFilter<T>(T suggestion, String filterQuery);
   
  
positive.code:   List<OptionGroup<T>> _optionGroups;
  
    /// A function that converts a single option to a filterable string.
    ItemRenderer<T> _toFilterableString;
  
    /// Function for filtering a single suggestion/option, defaults to
    /// [filterOption] method.
    StringSuggestionFilter<T> _suggestionFilter;
  
    /// The [ItemRenderer] that sanitizes options and queries before filtering.
    ItemRenderer _sanitizeString;
  
    bool _shouldSort = false;
  
    /// The list of options and optionally a function to convert the option into a
    /// string that can be used for filtering the list.
  
negative.code:   StringSelectionOptions(List<T> options,
        {ItemRenderer<T> toFilterableString,
        StringSuggestionFilter<T> suggestionFilter,
        ItemRenderer<String> sanitizeString: _stringFormatSuggestion,
        bool shouldSort: false})
        : this.withOptionGroups([new OptionGroup(options)],
              toFilterableString: toFilterableString,
  