private void AddFile(SoftwareInfo software, string modulesPath, string file, Dictionary <string, ModuleInfo> modules)
        {
            var fileName = Path.GetFileName(file);
            var filePath = Path.Combine(modulesPath, fileName).ToLowerInvariant();

            var productName = software.Product.Name;
            var moduleName  = ModuleProvider.GetModuleName(productName, filePath);

            if (moduleName == null)
            {
                Logger.LogError("Missing module for {0}", filePath);
                moduleName = fileName;
            }

            var buffer = File.ReadAllBytes(file);

            if (!modules.TryGetValue(moduleName, out ModuleInfo moduleInfo))
            {
                moduleInfo = GetModule(software, buffer);
                modules.Add(moduleName, moduleInfo);
            }

            var hashString = HashProvider.GetHashString(buffer, HashName);

            moduleInfo.Hash.Values.Add(filePath, hashString);
        }