protected override void OnVisitFolder(IProgressStatus monitor, string path, string domain, bool recursive)
        {
            if (path == rootFolder)
            {
                // Create an index
                scanDataIndex = new AddinScanDataIndex();

                base.OnVisitFolder(monitor, path, domain, recursive);

                // Scan the files after visiting the folder tree. At this point the assembly index will be complete
                // and will be able to resolve assemblies during the add-in scan

                foreach (var file in foundFiles)
                {
                    if (scanner.ScanConfigAssemblies(monitor, file, ScanContext, out var config) && config != null)
                    {
                        StoreScanDataFile(monitor, file, config);
                    }
                }
                foreach (var file in foundAssemblies)
                {
                    if (scanner.ScanAssembly(monitor, file, ScanContext, out var config) && config != null)
                    {
                        StoreScanDataFile(monitor, file, config);
                    }

                    // The index contains a list of all assemblies, no matter if they are add-ins or not
                    scanDataIndex.Assemblies.Add(file);
                }

                foundFiles.Clear();
                foundAssemblies.Clear();

                scanDataIndex.SaveToFolder(path);
                scanDataIndex = null;
            }
            else
            {
                base.OnVisitFolder(monitor, path, domain, recursive);
            }
        }