private ZipArchiveEntry DoCreateEntry(string entryName, CompressionLevel? compressionLevel)
{
Contract.Ensures(Contract.Result<ZipArchiveEntry>() != null);
if (entryName == null)
throw new ArgumentNullException(nameof(entryName));
if (string.IsNullOrEmpty(entryName))
throw new ArgumentException(SR.CannotBeEmpty, nameof(entryName));
if (_mode == ZipArchiveMode.Read)
throw new NotSupportedException(SR.CreateInReadMode);
ThrowIfDisposed();
ZipArchiveEntry entry = compressionLevel.HasValue
? new ZipArchiveEntry(this, entryName, compressionLevel.Value)
: new ZipArchiveEntry(this, entryName);
AddEntry(entry);
return entry;
}