private static long writeUnchangedEntry(final ZipWriter zipWriter,
                                            final ZipFile sourceZipFile,
                                            final ZipArchiveEntry sourceEntry) throws IOException {
        Objects.requireNonNull(sourceEntry);
        final boolean hasKnownSize = ZipUtil.hasKnownUncompressedSize(sourceEntry);
        final long size;
        if (ZipUtil.hasKnownUncompressedSize(sourceEntry)) {
            // We know the size so can just write the raw entry without having to de-compress/compress it
            try (InputStream rawInputStream = sourceZipFile.getRawInputStream(sourceEntry)) {
                zipWriter.writeRawStream(sourceEntry, rawInputStream);
                size = sourceEntry.getSize();
            }
        } else {
            // We don't know the uncompressed size, so have to effectively de-compress/compress it to find out
            try (InputStream inputStream = sourceZipFile.getInputStream(sourceEntry)) {
                size = zipWriter.writeStream(sourceEntry.getName(), inputStream);
            }
        }
        LOGGER.debug(() -> LogUtil.message("writeUnchangedEntry() - sourceEntry: {}, hasKnownSize: {}, size: {}",
                sourceEntry,
                hasKnownSize,
                (size != ArchiveEntry.SIZE_UNKNOWN
                        ? ByteSize.ofBytes(size).toString()
                        : "?")));
        return size;
    }
@return The uncompressed size of the entry
stroom-proxy/stroom-proxy-app/src/main/java/stroom/proxy/app/handler/ZipReceiver.java