public static void ClearCache(this ProcedureContext procedureContext)
        {
            #region Argument exceptions

            if (procedureContext == null)
            {
                throw new ArgumentNullException(nameof(procedureContext));
            }

            if (procedureContext.ClearCacheMode == ClearCacheMode.Default)
            {
                throw new ArgumentException("Invalid ClearCacheMode[ClearCacheMode.Default]");
            }

            #endregion

            if (procedureContext.IsCancellationRequested)
            {
                return;
            }

            if (procedureContext.ClearCacheMode != ClearCacheMode.Nothing)
            {
                EventsNotifier.Instance.Notify(ProcedureEvents.ProcedureAnalyzeStepClearCache);
            }

            if (procedureContext.ClearCacheMode == ClearCacheMode.CurrentCube ||
                procedureContext.ClearCacheMode == ClearCacheMode.CurrentCubeAndFileSystem ||
                procedureContext.ClearCacheMode == ClearCacheMode.CurrentDatabase ||
                procedureContext.ClearCacheMode == ClearCacheMode.CurrentDatabaseAndFileSystem ||
                procedureContext.ClearCacheMode == ClearCacheMode.AllDatabases ||
                procedureContext.ClearCacheMode == ClearCacheMode.AllDatabasesAndFileSystem)
            {
                XmlaHelper.ClearCache(procedureContext);
            }

            if (procedureContext.ClearCacheMode == ClearCacheMode.FileSystemOnly ||
                procedureContext.ClearCacheMode == ClearCacheMode.CurrentCubeAndFileSystem ||
                procedureContext.ClearCacheMode == ClearCacheMode.CurrentDatabaseAndFileSystem ||
                procedureContext.ClearCacheMode == ClearCacheMode.AllDatabasesAndFileSystem)
            {
                FileSystemHelper.ClearFileSystemCache(clearStandbyCache: true);
            }
        }