private static void AddEntriesRecursively( IFileSystemReader fileSystem, List<string> entries, string directory, bool addFiles, bool addDirectories, string prefix = "" )
        {
            if( addDirectories
             && !directory.NullOrEmpty() )
                entries.Add(directory);

            foreach( var d in fileSystem.GetDirectoryNames(directory) )
                AddEntriesRecursively(fileSystem, entries, DataStore.Combine(directory, d), addFiles, addDirectories, DataStore.Combine(prefix, d));

            if( addFiles )
            {
                foreach( var f in fileSystem.GetFileNames(directory) )
                    entries.Add(DataStore.Combine(prefix, f));
            }
        }