Protocolo Swift Codable com enumerações recursivas

Digamos que eu tenho um modelo como o seguinte, que me permite construir uma árvore de objetos Foo.

struct Foo {

    var kind : Kind

    enum Kind {
        case node([Foo])
        case leaf
    }
}

Como posso tornar este codificável, especificamente para ocase node([Foo])?

questionAnswers(3)

yourAnswerToTheQuestion