module org
{
    module jacorb
    {
        module test
        {
            module bugs
            {
                module bugjac801
                {
                    enum B 
                    {
                        case1,
                        case2,
                        case3,
                        case4
                    };
                    
                    union A switch ( B ) 
                    {
                        case case1:
                        case case2: boolean toto;
                        case case3:
                        case case4: short titi;
                    };

                   typedef boolean Empty;

                   union OptSArrayElapsedTimeOnPointElapsedTimeOnItemsMAX_EET_POINT switch(boolean) {
                    case TRUE :                     string value;
                    case FALSE :                    Empty Nothing;
                   };
                   union OptSArrayElapsedTimeOnFIRElapsedTimeOnItemsMAX_EET_FIR switch(boolean) {
                    case TRUE :                     short value;
                    case FALSE :                     Empty Nothing;
                };

                   struct ElapsedTimeOnItems
                   {
                      OptSArrayElapsedTimeOnPointElapsedTimeOnItemsMAX_EET_POINT eetptField;
                      OptSArrayElapsedTimeOnFIRElapsedTimeOnItemsMAX_EET_FIR eetfirField;
            };
                    union OptElapsedTimeOnItems switch(boolean)
                    {
                       case TRUE :                       ElapsedTimeOnItems value;
                       case FALSE :                      Empty Nothing;
        };

                   union LongSwitch switch(long)
                    {
                       case 1 :                       string value;
                       case 2 :                      long Nothing;
};
 
                   union SimpleSwitch switch(boolean)
                    {
                       case TRUE :                       string value;
                       case FALSE :                      long Nothing;
                    };
                };
            };
        };
    };
};
