struct A;
struct B;
struct D { struct B *b; };
struct Y;
struct Z { struct Y *y; struct D *d; };
struct Y { struct Z z; };
struct X { struct Y y; };
struct C { struct A *a; struct D d; };
struct B { struct C c; struct D d; };
struct A { struct B b; struct X x; } a;