anchor.diff:      zipBuilder.addEntry(assetEntry);
     }
   
  -  zipBuilder.addEntry(_createAssetManifest(assets));
  +  zipBuilder.addEntry(_createAssetManifest(assetVariants));
   
     ZipEntry fontManifest = _createFontManifest(manifestDescriptor, usesMaterialDesign, includeRobotoFonts);
     if (fontManifest != null)
  
positive.code: }) async {
    printTrace('Building $outputPath');
  
    PackageMap packageMap = new PackageMap(path.join(assetBasePath, '.packages'));
    Map<_Asset, List<_Asset>> assets = _parseAssets(packageMap, manifestDescriptor, assetBasePath);
  
    final bool usesMaterialDesign = manifestDescriptor != null && manifestDescriptor['uses-material-design'] == true;
  
    ZipBuilder zipBuilder = new ZipBuilder();
  
    if (snapshotFile != null)
      zipBuilder.addEntry(new ZipEntry.fromFile(_kSnapshotKey, snapshotFile));
  
    for (_Asset asset in assets.keys) {
      ZipEntry assetEntry = _createAssetEntry(asset);
      if (assetEntry == null)
        return 1;
      zipBuilder.addEntry(assetEntry);
  
      for (_Asset variant in assets[asset]) {
        ZipEntry variantEntry = _createAssetEntry(variant);
        if (variantEntry == null)
          return 1;
  
negative.code:   return new ZipEntry.fromFile(asset.assetEntry, file);
  }
  
  ZipEntry _createAssetManifest(Map<_Asset, List<_Asset>> assetVariants) {
    Map<String, List<String>> json = <String, List<String>>{};
    for (_Asset main in assetVariants.keys) {
      List<String> variants = <String>[];
      for (_Asset variant in assetVariants[main])
        variants.add(variant.relativePath);
      json[main.relativePath] = variants;
    }
  