anchor.diff:  
     List _selectedIndices(items) => enumerate(items).where((e) => e.value[SELECTED]).map((e) => e.index).toList();
   
  -  adjustIndexes(items) {
  +  adjustIndexes(maxIndex) {
       if (_firstIndex < 0) {
         _firstIndex = 0;
  -    }
  -    if (_lastIndex > items.length) _lastIndex = items.length;
  +      if (_lastIndex < _firstIndex + 2*_shownItemCount) _lastIndex = min(_firstIndex + 2*_shownItemCount, maxIndex);
  +    }
  +    if (_lastIndex > maxIndex) {
  +      _lastIndex = maxIndex;
  +      if (_firstIndex > _lastIndex - 2*_shownItemCount) _firstIndex = max(_lastIndex - 2*_shownItemCount, 0);
  +    }
  +    if ((_lastIndex - _firstIndex < 2*_shownItemCount) && (_lastIndex - _firstIndex < maxIndex)) {
  +      _firstIndex = _lastIndex - 2*_shownItemCount;
  +      adjustIndexes(maxIndex);
  +    }
  +
     }
   
     _moveScrollDivToFirstShown() {
  
positive.code:         "selectorText" : selectorText,
          "showFirstLast" : showFirstLast,
          "onChange": onChange,
        }..addAll({"key": key == null ? "__length-only${items.length}" : "${key}-length${items.length}"}));
      };
    }
  
  
negative.code:   }
  
    componentWillUpdate(nextProps, nextState) {
      print("Current: ${items.length}, Next: ${nextProps["items"].length}");
      adjustIndexes(nextProps["items"].length);
    }
  
    componentDidUpdate(prevProps,__,___) {
  