struct Bar { long b1; char b2; }; union Foo switch (long) { case 1: long x; case 2: Bar y; default: char z; }; union Foo2 switch (char) { case 'a': long x; case 'b': Foo y; }; interface a { struct astruct { Foo2 a1; Foo a2; Bar a3; }; Foo2 opA(in astruct b); };