public string ProcessLink(string link, int recursionLevel, string startingUrl, object storageLock)
        {
            Uri    uri          = new Uri(startingUrl);
            string completeLink = uri.Scheme + @":\\" + new Uri(startingUrl).Authority + @"/" + link;
            bool   isNewValue   = false;

            lock (storageLock)
            {
                if (!storageProvider.Contains(completeLink))
                {
                    outputProvider.WriteLine(completeLink + " " + (recursionLevel + 1).ToString());
                    storageProvider.TryAdd(completeLink, recursionLevel + 1);
                    isNewValue = true;
                }
            }

            if (isNewValue)
            {
                return(completeLink);
            }
            else
            {
                return(null);
            }
        }