¿Cómo funciona la recursividad en un Java 8 Stream?

Tengo un método como este donde estoy usando la recursión con 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());
  }

Digamos unMember class tiene una lista secundaria de miembros que siempre se inicializa en una lista vacía. Aquí lo que estoy haciendo es convertir la lista jerárquica de miembros en una lista plana. Entiendo esa parte. Lo que no entiendo es cómo funciona la recursividad aquí.

En la recursividad, finaliza cuando se cumplen ciertas condiciones. Pero aquí no estoy dando ninguna condición para terminar intencionalmente. Entonces, ¿cómo funciona la parte de terminación aquí?

Respuestas a la pregunta(2)

Su respuesta a la pregunta