anchor.diff:  // for details. All rights reserved. Use of this source code is governed by a
   // BSD-style license that can be found in the LICENSE file.
   
  +// @dart=2.12
  +
   library dart2js.util.setlet;
   
   import 'dart:collection' show SetBase;
   
   class Setlet<E> extends SetBase<E> {
  -  static const _SetletMarker _MARKER = const _SetletMarker();
  +  static const _SetletMarker _MARKER = _SetletMarker();
     static const int CAPACITY = 8;
   
     // The setlet can be in one of four states:
  
positive.code:   }
  
    @override
    Set<E> union(Set<E> other) => new Set<E>.from(this)..addAll(other);
  
    @override
    Setlet<E> intersection(Set<Object> other) =>
        new Setlet<E>.from(this.where((e) => other.contains(e)));
  
    @override
    Setlet<E> difference(Set<Object> other) =>
        new Setlet<E>.from(this.where((e) => !other.contains(e)));
  
    @override
    Setlet<E> toSet() {
      Setlet<E> result = new Setlet<E>();
      if (_extra == null) {
        result._contents = _contents;
      } else if (_extra == _MARKER) {
  
negative.code:   var _extra;
  
    Setlet();
  
    Setlet.from(Iterable<E> elements) {
      addAll(elements);
    }
  
    static Set<R> _newSet<R>() => Setlet<R>();
  
    @override
    Set<R> cast<R>() => Set.castFrom<E, R>(this, newSet: _newSet);
  
    @override
    Iterator<E> get iterator {
      if (_extra == null) {
        return _SetletSingleIterator<E>(_contents);
      } else if (_MARKER == _extra) {
        return _contents.iterator;
      } else {
        return _SetletListIterator<E>(_contents, _extra);
      }
    }
  
  