anchor.diff:      assert(remainingExtent >= 0.0);
       final double targetEndScrollOffset = scrollOffset + remainingExtent;
   
  -    //debugPrint('constraints[scrollOffset=${constraints.scrollOffset}, remainingCacheExtent=${constraints.remainingCacheExtent}, cacheOrigin=${constraints.cacheOrigin}]');
       debugPrint('scrollOffset=$scrollOffset, targetEndScrollOffset=$targetEndScrollOffset');
   
       bool reachedEnd = false;
  
positive.code:     _gridDelegate = value;
    }
  
    List<_ViewportOffsets> _viewportOffsets;
  
    @override
    void performLayout() {
  
negative.code:       lastIndex = index;
      }
  
      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();
        }
        return;
      }
  
  