module Test {

    local interface L { };

    exception X {
        L ref_value;
    };

    struct S {
        long long_value;
        L    ref_value;
    };

    union U switch (long) {
        case 0: L ref_value;
        case 1: long long_value;
        default: boolean bool_value;
    };

    typedef L LT;
    typedef S ST;
    typedef U UT;

    typedef sequence <L> LUS;
    typedef sequence <L,10> LBS;
    typedef L LA[5];

    typedef sequence <S> SUS;
    typedef sequence <S,10> SBS;
    typedef S SA[5];

    typedef sequence <LT> LTUS;
    typedef sequence <LT,10> LTBS;
    typedef LT LTA[5];

    typedef sequence <ST> STUS;
    typedef sequence <ST,10> STBS;
    typedef ST STA[5];

    typedef sequence <U> UUS;
    typedef sequence <U,10> UBS;
    typedef U UA[5];

    typedef sequence <UT> UTUS;
    typedef sequence <UT,10> UTBS;
    typedef UT UTA[5];
};

