
module org
{
   module jacorb
   {
      module test
      {
         module idl
         {
            module names {

               interface XPOA { void op(); };

               typedef string blubHolder;
               typedef long longHolder[2];
               typedef sequence<short> shortHolder;

               struct SHolder { string s;};

               enum numHolder { one, two };

               union UHolder switch (numHolder)
               {
                  default : string s;
               };

               module ArrrgPackage
               {
                  interface BlubPackage {
                     typedef  sequence<short> shortHolder;
                  };
               };


               interface KeyHolder { };

               interface Test {

                  attribute KeyHolder aHolder;

                  // Cannot use same
                  // void op1( in blubHolder blubHolder );
                  void op1( in blubHolder blubHolderParam );
                  void op2( in longHolder k );
                  void op3( in shortHolder k );
                  void opHolder();
               };

               module M
               {
                  typedef short M1; // M is an error

                  interface I {
                     void i1(in short j); // i is an error
                  };
               };

               module M {
                  module T {
                     module M {

                        typedef short M20;

                        module M3 {
                           typedef short M4;
                        };

                        struct TEST2 {
                           string tesT4;
                           //string TesT4; // error: must be caught
                        };

                        //  enum teSt2 { t, T };

                     };
                  };

               };
            };
         };
      };
   };
};
