private ParseFileResult ParseEntry(ZipArchiveEntry entry, IFieldDataPlugin plugin, LocationInfo locationInfo)
        {
            using (var entryStream = entry.Open())
                using (var reader = new BinaryReader(entryStream))
                    using (var memoryStream = new MemoryStream(reader.ReadBytes((int)entry.Length)))
                    {
                        var proxyLog = ProxyLog.Create(Log, plugin, entry);

                        var result = locationInfo == null
                    ? plugin.ParseFile(memoryStream, ResultsAppender, proxyLog)
                    : plugin.ParseFile(memoryStream, locationInfo, ResultsAppender, proxyLog);

                        switch (result.Status)
                        {
                        case ParseFileStatus.CannotParse:
                            result = ParseFileResult.CannotParse($"{proxyLog.Prefix}: {result.ErrorMessage}");
                            break;

                        case ParseFileStatus.SuccessfullyParsedButDataInvalid:
                            result = ParseFileResult.SuccessfullyParsedButDataInvalid($"{proxyLog.Prefix}: {result.ErrorMessage}");
                            break;
                        }

                        return(result);
                    }
        }