anchor.diff:    );
   
     // Check if this layout is cached.
  -
     if (LayoutCache.of(context).containsKey(encodedParameters)) {
       return _generateLayout(
         products: products,
  
positive.code:     );
    }
  
    final List<Size> productSizes = [
      for (var product in products)
        _imageSize(
          Image.asset(
            product.assetName,
            package: product.assetPackage,
          ),
        ),
    ];
  
    bool hasNullSize = false;
    for (final productSize in productSizes) {
      if (productSize == null) {
        hasNullSize = true;
        break;
      }
    }
  
    if (hasNullSize) {
      // If some image sizes are not read, return default layout.
      // Default layout is not cached.
  
      List<List<Product>> result =
          List<List<Product>>.generate(columnCount, (columnIndex) => []);
      for (var index = 0; index < products.length; ++index) {
        result[index % columnCount].add(products[index]);
      }
  
      return result;
    }
  
    // All images have sizes. Use tailored layout.
  
    final List<double> productHeights = [
      for (final productSize in productSizes)
        productSize.height /
                productSize.width *
                (largeImageWidth + smallImageWidth) /
                2 +
            productCardAdditionalHeight,
    ];
  
  
negative.code:         for (final index in column) products[index],
        ]
    ];
  }
  
  /// Given [columnObjects], list of the set of objects in each column,
  