public async IAsyncEnumerable <IFileSystemNode> Enumerate( [EnumeratorCancellation] CancellationToken cancellationToken) { await foreach (var node in _source.Enumerate(cancellationToken)) { switch (node) { case IReadOnlyFile sourceFile: yield return(await CacheFile(sourceFile)); break; } } }