C# – Estrutura de Repetição em Cascata

primeiramente bom dia!

Tenho uma tarefa de alimentar uma "árvore de arquivos (estilo windows explorer)" em formato de objeto.

Para isso eu tenho inicialmente um método que lista todos os arquivos e pastas do diretório root do sistema de arquivos, e com base da tipagem destes (que pode variar entre Pasta e Arquivo) eu devo alimentar a propriedade com o conteúdo dessa pasta.

Meu problema é que eu só consigo alimentar a primeira camada deste objeto, deixando suas sub-pastas ainda vazias. Ou seja, minha chamada while não desce para os demais níveis.
Alguém consegue dizer o que eu errei?

    public async Task<List<Arquivo>> ListarArquivosEPastas()
    {
        try
        {
            var arquivos = await ListarArquivosOuPastas("/");

            foreach (var arquivo in arquivos)
            {
                while (arquivo.Tipo == "Pasta" && arquivo.Conteudo is null)
                {
                    arquivo.Conteudo = await ListarArquivosOuPastasPorIdDiretorio(arquivo.Id);
                }
            }

            return arquivos;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

Ilustração de como o retorno está vindo: inserir a descrição da imagem aqui