Como funciona a recursão em um Java 8 Strea

Eu tenho um método como este em que estou usando a recursão com Streams:

  private static List<Member> convertToFlatList(List<Member> memberList)
  {
    return memberList.stream().flatMap(i -> Stream.concat(Stream.of(i), convertToFlatList(i.getChildren()).stream())).collect(Collectors.toList());
  }

Vamos dizer umMember classe @ tem uma lista de filhos de membros que sempre é inicializada em uma lista vazia. Aqui, o que estou fazendo é converter a lista hierárquica de membros em uma lista simples. Eu entendo essa parte. O que não entendo é como a recursão funciona aqui.

Na recursão, é encerrado quando determinadas condições são atendidas. Mas aqui não estou dando nenhuma condição para terminar intencionalmente. Então, como a parte de terminação funciona aqui?

questionAnswers(2)

yourAnswerToTheQuestion