anchor.diff:      _boundedBehavior ??= new BoundedBehavior();
       return _boundedBehavior;
     }
  -
   
     void _initSelection(TabBarSelectionState<T> selection) {
       _selection = selection;
  
positive.code: 
      if (scrollVelocity.dx.abs() > _kMinFlingVelocity) {
        final int selectionDelta = scrollVelocity.dx > 0 ? -1 : 1;
        _selection.value = _selection.values[(_selection.index + selectionDelta).clamp(0, _tabCount - 1)];
        return new Future.value();
      }
  
      final int selectionIndex = _selection.index;
      final int settleIndex = snapScrollOffset(scrollOffset).toInt();
      if (selectionIndex > 0 && settleIndex != 1) {
        _selection.value = _selection.values[selectionIndex + (settleIndex == 2 ? 1 : -1)];
        return new Future.value();
      } else if (selectionIndex == 0 && settleIndex == 1) {
        _selection.value = _selection.values[1];
  
negative.code:   }) : items = items, itemBuilder = itemBuilder, super(
      key: key,
      scrollDirection: ScrollDirection.horizontal,
      children: items.map((T item) => itemBuilder(item)).toList(),
      itemsWrap: false
    ) {
      assert(items != null);
  