anchor.diff:  
                   },  items.getRange(firstIndex, lastIndex).map((item) => span({
                         'ref' : '${item[VALUE]}',
  -                      'onMouseDown': (_) => onChange(item),
  -                      'className': item[CLASSNAME],
  +                      'onMouseDown': (_) => onChange(item[VALUE]),
  +                      'className': "${item[CLASSNAME]} ${useAnimation ? "" : noAnimationClass}",
                       }, item[TEXT])).toList()
               )
           ),
           _renderArrow(false),
  -        showFirstLast ? _renderFastRightArrow() : div()
  +        showFirstLast ? _renderFastRightArrow() : div({})
         ]);
   
   }
positive.code:     _moveScrollDivToFirstShown(firstShownIndex);
    }
  
    _scrollToIndex(num index, {num relativePos: 0.4}) {
      if (index < 0 || index > items.length) {
        throw new RangeError("Cannot scroll to index $index, out of range [0, ${items.length})");
      }
      var firstShownIndex = min(max(index - (_shownItemCount*relativePos as num).floor(), 0), items.length - _shownItemCount);
      _moveScrollDivToFirstShown(firstShownIndex);
    }
  
    _calculateCentroid() {
      var selectedIndices = enumerate(items).where((e) => e.value[SELECTED]).map((e) => e.index).toList();
      return selectedIndices.length == 0 ? 0 : selectedIndices.reduce((v,e) => v + e) ~/ selectedIndices.length;
    }
  
    _scrollToCentroid() =>
  
negative.code: 
    get _visibleItemsWindowSize => ref('itemsDiv') != null ? ref('itemsDiv').marginEdge.width : null;
    get _shownItemCount => _visibleItemsWindowSize ~/ _spanWidth;
    get _minMarginLeft => _visibleItemsWindowSize - (items.length * _spanWidth);
    get _shouldDrawLeft => true;
    get _shouldDrawRight => true;
    get _scrollListWidth => _spanWidth*(lastIndex-firstIndex);
  