private T GetChromiumRootFolderWorker(FullPath path, Func <FullPath, T> factory)
        {
            var root = _chromiumDiscovery.GetEnlistmentRootPath(path);

            if (root == null)
            {
                lock (_lock) {
                    // No one in the parent chain is a Chromium directory.
                    path.EnumeratePaths().ForAll(x => _nonChromiumPaths.Add(x, null));
                }
                return(default(T));
            }

            var result = factory(root.Value);

            lock (_lock) {
                _chromiumRootDirectories.Add(root.Value, result);
            }
            return(result);
        }