anchor.diff:      onScroll: onScroll,
       onScrollEnd: onScrollEnd,
       snapOffsetCallback: snapOffsetCallback
  -  );
  +  ) {
  +    assert(itemsSnapAlignment != null);
  +  }
   
     /// Whether the first item should be revealed after scrolling past the last item.
     final bool itemsWrap;
   
     /// Controls whether a fling always reveals the adjacent item or whether flings can traverse many items.
  -  final ItemsSnapAlignment itemsSnapAlignment;
  +  final PageableListFlingBehavior itemsSnapAlignment;
   
     /// Called when the currently visible page changes.
     final ValueChanged<int> onPageChanged;
  
positive.code: 
    Future<Null> fling(double scrollVelocity) {
      switch(config.itemsSnapAlignment) {
        case ItemsSnapAlignment.adjacentItem:
          return _flingToAdjacentItem(scrollVelocity);
        default:
          return super.fling(scrollVelocity).then(_notifyPageChanged);
      }
    }
  
  
negative.code:     ScrollListener onScrollEnd,
      SnapOffsetCallback snapOffsetCallback,
      this.itemsWrap: false,
      this.itemsSnapAlignment: PageableListFlingBehavior.stopAtNextPage,
      this.onPageChanged,
      this.scrollableListPainter,
      this.duration: const Duration(milliseconds: 200),
  