IList <XPathObjectNode> ActivateSuperFileElements() { var file = (SuperFile)_target; //???? if (!file.IsDirectory) { _elements.Target = _emptyElements; return(_emptyElements); } // progress if (_context.IncrementDirectoryCount != null) { _context.IncrementDirectoryCount(1); } var elements = new List <XPathObjectNode>(); Explorer explorer; if (file.Explorer.CanExploreLocation) { var argsExplore = new ExploreLocationEventArgs(ExplorerModes.Find, file.File.Name); explorer = file.Explorer.ExploreLocation(argsExplore); } else { var argsExplore = new ExploreDirectoryEventArgs(ExplorerModes.Find, file.File); explorer = file.Explorer.ExploreDirectory(argsExplore); } if (explorer != null) { var argsFiles = new GetFilesEventArgs(ExplorerModes.Find); foreach (var it in explorer.GetFiles(argsFiles)) { // filter out a leaf if (_context.Filter != null && !it.IsDirectory && !_context.Filter(explorer, it)) { continue; } // add elements.Add(new XPathObjectNode(_context, new SuperFile(explorer, it), null, this, elements, elements.Count)); } } if (elements.Count == 0) { _elements.Target = _emptyElements; } else { _elements.Target = elements; } return(elements); }