Better support for recursive types. See TreeVisitor example