module inherit
{
    interface A {
    };

    interface B: A
     {
         oneway void notify();

         void doit(out string s);
     };

     module big
     {

	struct Type1ArgumentStruct {
          string name;
	};

	interface Type1 {
          attribute string name;
        };

        interface Base
        {
            void testOperation();
        };

	interface Type1Factory : Base {
              Type1 createType1(in Type1ArgumentStruct arg);
	};

	interface Type2 {
          attribute string name;
        };

	interface Type2Factory : Base{
		Type2 createType2(in Type1ArgumentStruct arg);
	};


	interface AllInOneFactory : Type1Factory, Type2Factory 
	{
          attribute string name;
	};
     };


}; 
