Added `union` support (much code in syntax source and generated result, but works).