module a {

    interface i {
#pragma version i 2.3

    };

    module inner {
        #pragma version i2 2.3

    interface i2 {};


    };



};

module b {
    interface j {
        void foo (in a::i val, in float vall);
    };

    interface jj  {
        void bar (in float val);
    };
};

module CORBAScopeTest
{
    typedef unsigned short ServiceType;
    typedef unsigned short ServiceOption;
    typedef unsigned short ServiceDetailType;

    enum DefinitionKind {
#pragma version DefinitionKind 2.3
	dk_none, dk_all,
	dk_Attribute, dk_Constant, dk_Exception, dk_Interface,
	dk_Module, dk_Operation, dk_Typedef,
	dk_Alias, dk_Struct, dk_Union, dk_Enum,
	dk_Primitive, dk_String, dk_Sequence, dk_Array,
	dk_Repository,
	dk_Wstring, dk_Fixed,
	dk_Value, dk_ValueVox, dk_ValueMember,
	dk_native
    };


    interface IRObject {
#pragma version IRObject 2.3
	// read interface
	readonly attribute DefinitionKind def_kind;

	// write interface
	void destroy ();

        struct FullInterfaceDescription {
#pragma version FullInterfaceDescription 2.3
            string                  name;
            boolean                     is_abstract;
        };
    };

    struct X { string name ; };
    struct Y { string name ; };


};
