private void GetPartial(IEnumerable <string> directories, CancellationToken token)
        {
            try
            {
                var tasks = directories.Select(directory =>
                {
                    return(Task.Factory.StartNew(() =>
                    {
                        token.ThrowIfCancellationRequested();

                        try
                        {
                            foreach (var file in _fileAbstraction.EnumerateFilesInDirectory(directory))
                            {
                                token.ThrowIfCancellationRequested();
                                ResultCollection.Add(file);
                            }
                        }
                        catch (UnauthorizedAccessException e)
                        {
                            Console.WriteLine(e);
                        }

                        GetPartial(_fileAbstraction.EnumerateTopDirectories(directory), token);
                    }));
                });
                var task = Task.WhenAll(tasks);
                task.GetAwaiter().GetResult();
            }
            catch (UnauthorizedAccessException e)
            {
                Console.WriteLine(e);
            }
        }