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;