anchor.diff:   * This equality behaves the same as [UnorderedIterableEquality] except that
    * it expects sets instead of iterables as arguments.
    */
  -class SetEquality<E> extends _UnorderedEquality<Set<E>> {
  +class SetEquality<E> extends _UnorderedEquality<E, Set<E>> {
     const SetEquality(
         [Equality<E> elementEquality = const DefaultEquality()])
         : super(elementEquality);
  
positive.code:   bool isValidKey(Object o) => o is List<E>;
  }
  
  abstract class _UnorderedEquality<T> implements Equality<T> {
    final Equality<E> _elementEquality;
  
    const _UnorderedEquality(this._elementEquality);
  
negative.code:  * and the elements of one set can be paired with the elements
   * of the other iterable, so that each pair are equal.
   */
  class UnorderedIterableEquality<E> extends _UnorderedEquality<E, Iterable<E>> {
    const UnorderedIterableEquality(
        [Equality<E> elementEquality = const DefaultEquality()])
        : super(elementEquality);
  