anchor.diff:  }
   
   ZipEntry _createAssetEntry(_Asset asset) {
  -  String source = asset.source ?? asset.key;
  +  String source = asset.source ?? asset.relativePath;
     File file = new File('${asset.base}/$source');
     if (!file.existsSync()) {
       printError('Cannot find asset "$source" in directory "${path.absolute(asset.base)}".');
       return null;
     }
  -  return new ZipEntry.fromFile(asset.key, file);
  +  return new ZipEntry.fromFile(asset.assetEntry, file);
   }
   
   ZipEntry _createAssetManifest(Map<_Asset, List<_Asset>> assets) {
  
positive.code:       result[baseAsset] = variants;
  
        // Find asset variants
        String assetPath = path.join(baseAsset.base, baseAsset.key);
        String assetFilename = path.basename(assetPath);
        Directory assetDir = new Directory(path.dirname(assetPath));
  
  
negative.code:   for (_Asset main in assets.keys) {
      List<String> variants = <String>[];
      for (_Asset variant in assets[main])
        variants.add(variant.relativePath);
      json[main.relativePath] = variants;
    }
    return new ZipEntry.fromString('AssetManifest.json', JSON.encode(json));
  }
  