anchor.diff:        output.writeUint32(crc32);
         output.writeUint32(compressedSize);
         output.writeUint32(uncompressedSize);
  -      output.writeUint16(filenameUtf8.length);
  +      output.writeUint16(encodedFilename.length);
         output.writeUint16(extraField.length);
         output.writeUint16(fileCommentUtf8.length);
         output.writeUint16(diskNumberStart);
         output.writeUint16(internalFileAttributes);
         output.writeUint32(externalFileAttributes);
         output.writeUint32(localHeaderOffset);
  -      output.writeBytes(filenameUtf8);
  +      output.writeBytes(encodedFilename);
         output.writeBytes(extraField);
         output.writeBytes(fileCommentUtf8);
       }
  
positive.code:     output.writeUint32(crc32);
      output.writeUint32(compressedSize);
      output.writeUint32(uncompressedSize);
      output.writeUint16(filenameUtf8.length);
      output.writeUint16(extra.length);
      output.writeBytes(filenameUtf8);
      output.writeBytes(extra);
  
      output.writeInputStream(compressedData);
  
negative.code:       compressedData = InputStream(bytes);
      }
  
      var encodedFilename = filenameEncoding.encode(file.name);
      var comment =
          file.comment != null ? Utf8Encoder().convert(file.comment!) : null;
  
      _data.localFileSize += 30 + encodedFilename.length + compressedData!.length;
  
      _data.centralDirectorySize +=
          46 + encodedFilename.length + (comment != null ? comment.length : 0);
  
      fileData.crc32 = crc32;
      fileData.compressedSize = compressedData.length;
  