Protocolo codificable rápido con enumeraciones recursivas

Digamos que tengo un modelo como el siguiente, que me permite construir un árbol de objetos Foo.

struct Foo {

    var kind : Kind

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

¿Cómo puedo hacer este Codificable, específicamente para elcase node([Foo])?