anchor.diff:      expect(classes, orderedEquals(['qux','bar', 'foo']));
     });
   
  +  test('retainAll', () {
  +    final classes = makeClassSet();
  +    classes.retainAll(['bar', 'baz', 'qux']);
  +    expect(classes, orderedEquals(['bar', 'baz']));
  +  });
  +
  +  test('removeWhere', () {
  +    final classes = makeClassSet();
  +    classes.removeWhere((s) => s.startsWith('b'));
  +    expect(classes, orderedEquals(['foo']));
  +  });
  +
  +  test('retainWhere', () {
  +    final classes = makeClassSet();
  +    classes.retainWhere((s) => s.startsWith('b'));
  +    expect(classes, orderedEquals(['bar', 'baz']));
  +  });
  +
     test('containsAll', () {
       final classes = makeClassSet();
  +    expect(classes.containsAll(['foo', 'baz']), isTrue);
  +    expect(classes.containsAll(['foo', 'qux']), isFalse);
       expect(classes.containsAll(['foo', 'baz'].toSet()), isTrue);
       expect(classes.containsAll(['foo', 'qux'].toSet()), isFalse);
     });
  
positive.code: 
    Element makeListElement() =>
      new Element.html('<ul class="foo bar baz">'
          '<li class="quux qux"><li class="meta">'
          '<li class="classy lassy"><li class="qux lassy"></ul>');
  
    Set<String> makeClassSet() => makeElementWithClasses().classes;
  
    Set<String> extractClasses(Element el) {
      final match = new RegExp('class="([^"]+)"').firstMatch(el.outerHtml);
      return new LinkedHashSet.from(match[1].split(' '));
    }
  
    test('affects the "class" attribute', () {
  
negative.code:     }
  
      elements.classes = [];
      expect(view(elements.classes), '[]');
      expect(view(elements), '[[], [], [], []]');
    });
  
    test('listMap', () {
      var elements = listElementSetup();
      expect(elements.classes.map((c) => c.toUpperCase()).toList(),
          unorderedEquals(['QUX', 'QUUX', 'META', 'CLASSY', 'LASSY']));
    });
  
    test('listContains', () {
      var elements = listElementSetup();
      expect(elements.classes.contains('lassy'), isTrue);
      expect(elements.classes.contains('foo'), isFalse);
    });
  
  
  