/// <summary>
 /// Initializes symbol loading. Adds the symbol server and/or the cache path (if not null) to the list of
 /// symbol servers. This API can be called more than once to add more servers to search.
 /// </summary>
 /// <param name="msdl">if true, use the public Microsoft server</param>
 /// <param name="symweb">if true, use symweb internal server and protocol (file.ptr)</param>
 /// <param name="symbolServerPath">symbol server url (optional)</param>
 /// <param name="timeoutInMinutes">symbol server timeout in minutes (optional)</param>
 /// <param name="symbolCachePath">symbol cache directory path (optional)</param>
 /// <param name="symbolDirectoryPath">symbol directory path to search (optional)</param>
 /// <returns>if false, failure</returns>
 private bool InitializeSymbolStore(
     IntPtr self,
     bool msdl,
     bool symweb,
     string symbolServerPath,
     string authToken,
     int timeoutInMinutes,
     string symbolCachePath,
     string symbolDirectoryPath)
 {
     if (msdl || symweb || symbolServerPath != null)
     {
         // Add the default symbol cache if no cache specified and adding server
         if (symbolCachePath == null)
         {
             symbolCachePath = _symbolService.DefaultSymbolCache;
         }
         if (!_symbolService.AddSymbolServer(msdl, symweb, symbolServerPath, authToken, timeoutInMinutes))
         {
             return(false);
         }
     }
     if (symbolCachePath != null)
     {
         _symbolService.AddCachePath(symbolCachePath);
     }
     if (symbolDirectoryPath != null)
     {
         _symbolService.AddDirectoryPath(symbolDirectoryPath);
     }
     return(true);
 }