/// <summary>
        ///     Initializes a new instance of the
        ///     <see cref="FileSystemSizeInfoChecker" /> class.
        /// </summary>
        /// <param name="searchPaths">The search paths.</param>
        /// <param name="excludedPaths">The excluded paths.</param>
        /// <param name="scope">The scope.</param>
        /// <param name="shouldSplitPaths">
        ///     if set to <c>true</c>
        ///     [should split paths].
        /// </param>
        /// <param name="shouldExcludeExtensions">
        ///     if set to <c>true</c>
        ///     [should exclude extensions].
        /// </param>
        /// <param name="extensions">The extensions.</param>
        /// <param name="minFileSize">Minimum size of the file.</param>
        /// <param name="maxFileSize">Maximum size of the file.</param>
        /// <param name="minFolderSize">Minimum size of the folder.</param>
        /// <param name="maxFolderSize">Maximum size of the folder.</param>
        /// <param name="minFolderContents">
        ///     The minimum folder
        ///     contents.
        /// </param>
        /// <param name="maxFolderContents">
        ///     The maximum folder
        ///     contents.
        /// </param>
        /// TODO Edit XML Comment Template for #ctor
        internal FileSystemSizeInfoChecker(
            IEnumerable <string> searchPaths,
            IEnumerable <string> excludedPaths,
            Scope scope,
            bool shouldSplitPaths,
            bool shouldExcludeExtensions,
            IEnumerable <string> extensions = null,
            int?minFileSize       = null,
            int?maxFileSize       = null,
            int?minFolderSize     = null,
            int?maxFolderSize     = null,
            int?minFolderContents = null,
            int?maxFolderContents = null)
        {
            FileSystemSizeInfoGetter = new FileSystemSizeInfoGetter(
                CancellationToken,
                searchPaths,
                excludedPaths,
                scope,
                shouldExcludeExtensions,
                extensions,
                minFileSize,
                maxFileSize,
                minFolderSize,
                maxFolderSize,
                minFolderContents,
                maxFolderContents);

            ShouldSplitPaths = shouldSplitPaths;
        }
        /// <summary>
        ///     Executes this instance.
        /// </summary>
        /// <returns>Task.</returns>
        /// TODO Edit XML Comment Template for Execute
        internal async Task Execute()
        {
            var task = Task.Run(
                () =>
            {
                var fileSystemSizeInfos =
                    FileSystemSizeInfoGetter.GetFileSystemSizeInfos();

                Results = new FileSystemSizeInfoFormatter(
                    CancellationTokenSource.Token,
                    fileSystemSizeInfos,
                    ShouldSplitPaths,
                    FileSystemSizeInfoGetter.MaxPathLevels)
                          .GetFormattedFileSystemSizeInfos();
            },
                CancellationToken);

            await task;

            var now = DateTime.Now;

            WriteAndOpenResults(now);
        }