protected override async Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken)
        {
            var path     = Path.Get(context);
            var criteria = SearchPattern?.Get(context) ?? "*.*";

            var directories = ResolveValues(path);
            var patterns    = ResolveValues(criteria);

            IEnumerable <string> result = new string[] { };

            foreach (var directory in directories)
            {
                foreach (var pattern in patterns)
                {
                    result = result.Union(Directory.EnumerateFiles(directory, pattern, SearchOption));
                }
            }

            if (Exclusions > 0)
            {
                result = result.Where(filePath => (new FileInfo(filePath).Attributes & Exclusions) == 0);
            }

            // Outputs
            return((ctx) => Result.Set(ctx, result));
        }
        protected override async Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken token)
        {
            var dir           = DirectoryPath.Get(context);
            var time          = Timeout.Get(context);
            var searchPattern = SearchPattern.Get(context) ?? "*.*";
            var afterDate     = CalculateDate(dir);
            var filePath      = await ExecuteWithTimeoutAsync(context, token, ExecuteMainAsync(dir, searchPattern, afterDate, token), time).ConfigureAwait(false);

            return(ctx => Result.Set(ctx, filePath != null ? new FileInfo(filePath) : null));
        }