struct X { int i; Y[] y; }; union Y { double; X; Z; }; struct Z { X x; Y y; }; protocol PmutualRecStructUnion { child: async Test(X x, Y y, Z z); async __delete__(); };