anchor.diff:  import 'scrollable.dart';
   import 'virtual_viewport.dart';
   
  -/// Controls what alignment items use when settling.
  -enum ItemsSnapAlignment {
  -  item,
  -  adjacentItem
  +/// Controls how a pageable list should behave during a fling.
  +enum PageableListFlingBehavior {
  +  canFlingAcrossMultiplePages,
  +  stopAtNextPage
   }
   
   /// Scrollable widget that scrolls one "page" at a time.
  
positive.code:     ScrollListener onScrollEnd,
      SnapOffsetCallback snapOffsetCallback,
      this.itemsWrap: false,
      this.itemsSnapAlignment: ItemsSnapAlignment.adjacentItem,
      this.onPageChanged,
      this.scrollableListPainter,
      this.duration: const Duration(milliseconds: 200),
  
negative.code:     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 PageableListFlingBehavior itemsSnapAlignment;
  
    /// Called when the currently visible page changes.
    final ValueChanged<int> onPageChanged;
  