anchor.diff:   */
   class _DoubleLinkedQueueSentinel<E> extends _DoubleLinkedQueueEntry<E> {
     _DoubleLinkedQueueSentinel(DoubleLinkedQueue queue) : super(queue) {
  -    _previous = this;
  -    _next = this;
  +    _previousLink = this;
  +    _nextLink = this;
     }
   
     _DoubleLinkedQueueElement _asNonSentinelEntry() {
  
positive.code:   }
  
    E removeLast() {
      _DoubleLinkedQueueEntry lastEntry = _sentinel._previous;
      E result = lastEntry._remove();
      _elementCount--;
      return result;
    }
  
    E removeFirst() {
      _DoubleLinkedQueueEntry firstEntry = _sentinel._next;
      E result = firstEntry._remove();
      _elementCount--;
      return result;
    }
  
    bool remove(Object o) {
      _DoubleLinkedQueueEntry<E> entry = _sentinel._next;
      while (!identical(entry, _sentinel)) {
        if (entry.element == o) {
          entry._remove();
          _elementCount--;
          return true;
        }
        entry = entry._next;
      }
      return false;
    }
  
    void _filter(bool test(E element), bool removeMatching) {
      _DoubleLinkedQueueEntry<E> entry = _sentinel._next;
      while (!identical(entry, _sentinel)) {
        _DoubleLinkedQueueEntry<E> next = entry._next;
        if (identical(removeMatching, test(entry.element))) {
          entry._remove();
          _elementCount--;
  
negative.code:   }
  
    bool get isEmpty {
      return (identical(_sentinel._nextLink, _sentinel));
    }
  
    void clear() {
      _sentinel._nextLink = _sentinel;
      _sentinel._previousLink = _sentinel;
      _elementCount = 0;
    }
  
    void forEachEntry(void f(DoubleLinkedQueueEntry<E> element)) {
      _DoubleLinkedQueueEntry<E> entry = _sentinel._nextLink;
      while (!identical(entry, _sentinel)) {
        _DoubleLinkedQueueEntry<E> nextEntry = entry._nextLink;
        _DoubleLinkedQueueElement element = entry;
        f(element);
        entry = nextEntry;
  