anchor.diff:        growthDirection: GrowthDirection.forward,
         advance: childAfter,
         remainingCacheExtent: forwardDirectionRemainingCacheExtent,
  -      cacheOrigin: centerOffset.clamp(-cacheExtent, 0.0),
  +      cacheOrigin: centerOffset.clamp(-_calculatedCacheExtent, 0.0),
       );
     }
   
  
positive.code:     // centerOffset is the offset from the leading edge of the RenderViewport
      // to the zero scroll offset (the line between the forward slivers and the
      // reverse slivers).
      final centerOffset = mainAxisExtent * anchor - correctedOffset;
      final double reverseDirectionRemainingPaintExtent =
          centerOffset.clamp(0.0, mainAxisExtent);
      final double forwardDirectionRemainingPaintExtent =
          (mainAxisExtent - centerOffset).clamp(0.0, mainAxisExtent);
  
      final fullCacheExtent = mainAxisExtent + 2 * cacheExtent;
      final centerCacheOffset = centerOffset + cacheExtent;
      final double reverseDirectionRemainingCacheExtent =
          centerCacheOffset.clamp(0.0, fullCacheExtent);
      final double forwardDirectionRemainingCacheExtent =
          (fullCacheExtent - centerCacheOffset).clamp(0.0, fullCacheExtent);
  
      final leadingNegativeChild = childBefore(center);
  
      if (leadingNegativeChild != null) {
        // negative scroll offsets
        final result = layoutChildSequence(
          child: leadingNegativeChild,
          scrollOffset: math.max(mainAxisExtent, centerOffset) - mainAxisExtent,
          overlap: 0.0,
  
negative.code:         growthDirection: GrowthDirection.reverse,
          advance: childBefore,
          remainingCacheExtent: reverseDirectionRemainingCacheExtent,
          cacheOrigin:
              (mainAxisExtent - centerOffset).clamp(-_calculatedCacheExtent, 0.0),
        );
        if (result != 0.0) return -result;
      }
  