Implementación de generador recursivo para estructura de árbol simple en Swift

Tengo una estructura de árbol simple en la memoria basada en un documento XML y estoy tratando de escribir un generador recursivo para admitirSequenceType, pero estoy atrapado en cómo hacer esto realmente.

Aquí fue mi primer intento:

@objc public class XMLNode: NSObject, SequenceType {
    public weak var parentNode: XMLNode?
    public var nodeName: String
    public var attributes: [String: String]
    public var childNodes = [XMLNode]()

    public func generate() -> AnyGenerator<XMLNode> {
        var childGenerator = childNodes.generate()
        var returnedSelf = false

        return anyGenerator {
            let child = childGenerator.next()

            if child != nil {
                // I need to somehow recurse on child here

                return child
            } else if !returnedSelf {
                returnedSelf = true
                return self
            } else {
                return nil
            }
        }
    }
}

Ya quechildNodes es una matriz, estoy llamando a su propio incorporadogenerate() función para crear un generador en los nodos secundarios e iterarlo, y luego regresarself al final. El problema es que no recurre a cada niño, por lo que solo llega un nivel de profundidad. No puedo entender cómo combinar dos generadores de esa manera.

¡Estoy teniendo dificultades para entender cómo hacer esto! ¿Qué necesito hacer para hacer un generador recursivo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta