anchor.diff:      Iterable<OutlineItem> searchSequence =
           atBottom ? _outlineItems.reversed : _outlineItems;
       for (OutlineItem item in searchSequence) {
  -      if (item.overlapsOffsetRange(codeOffsetRange)) {
  -        return item;
  -      }
  +      // Unlike [_itemAtCodeOffset], this function is called when the user
  +      // scrolls the cursor with the mouse or moves it with the arrow keys.
  +      // In that case, there is always a prior position with a prior item
  +      // already selected in the outline. So not finding anything and doing
  +      // nothing is fine.
  +      if (item.offsetRange.intersects(codeOffsetRange)) return item;
       }
       return null;
     }
  
positive.code:   int get nameStartOffset => _data.nameStartOffset;
    int get nameEndOffset => _data.nameEndOffset;
  
    bool overlapsOffset(int offset) => _offsetRange.includes(offset);
    bool overlapsOffsetRange(OffsetRange range) => _offsetRange.overlaps(range);
  
    html.LIElement get element => _element;
    html.AnchorElement get anchor => _anchor;
  
negative.code:     if (_outlineItems == null) return null;
  
      for (OutlineItem item in _outlineItems) {
        // The first condition will work when the cursor is within an item.
        // The second one will work when the cursor is between items:
        // it will find the first element lower then the offset. It is only
        // needed here because this function is called when the user clicks
        // in the file somewhere: contrast this with [_edgeItemInCodeOffsetRange].
        if (item.offsetRange.includes(codeOffset) ||
            item.offsetRange.top > codeOffset) {
          return item;
        }
      }
  