anchor.diff:  
   class _ViewportOffsets {
     _ViewportOffsets(
  -  List<double> mainAxisOffsets,
  -      this.trailingScrollOffset,
  -      [
  -      this.pageIndex = 0,
  -      this.firstChildIndex = 0,
  -    ]
  -  ) : this.mainAxisOffsets = new List.from(mainAxisOffsets);
  +    List<double> mainAxisOffsets,
  +    this.trailingScrollOffset, [
  +    this.pageIndex = 0,
  +    this.firstChildIndex = 0,
  +  ]) : this.mainAxisOffsets = new List.from(mainAxisOffsets);
   
     final int pageIndex;
   
  
positive.code:         visibleIndices.add(index);
        }
  
        if(geometry.trailingScrollOffset >= viewportOffset.trailingScrollOffset){
          int nextPageIndex = viewportOffset.pageIndex + 1;
          var nextViewportOffset = new _ViewportOffsets(mainAxisOffsets, (nextPageIndex + 1) * pageSize, nextPageIndex, index);
            viewportOffsets[nextPageIndex] = nextViewportOffset;
            viewportOffset = nextViewportOffset;
        }
  
        final double endOffset =
  
negative.code:     collectGarbage(visibleIndices);
  
      if (!visible) {
        if (scrollOffset > viewportOffset.trailingScrollOffset) {
          // We are outside the bounds, we have to correct the scroll.
          double viewportOffsetScrollOffset = pageSize * viewportOffset.pageIndex;
          double correction = viewportOffsetScrollOffset - scrollOffset;
          geometry = new SliverGeometry(
            scrollOffsetCorrection: correction,
          );
        } else {
          geometry = SliverGeometry.zero;
          childManager.didFinishLayout();
        }
  