import L"ﬞtoto";
import x;
module M {
  typedef long ArgType;
  const long I = 10;
  typedef short Y;
};
interface A {
  struct S {
    struct T {
      ArgType x[I], JDD;       // ArgType and I introduced
      long y;             // a new y is defined, the existing Y is not used
    } m;
  };
  typedef string ArgType; // Error: ArgType redefined
  enum I { I1, I2 };      // Error: I redefined
  typedef short Y;        // OK
};                        // Potential scope of ArgType and I ends here

interface B : A {
  typedef long ArgType;   // OK, redefined in derived interface
  struct S {              // OK, redefined in derived interface
    ArgType x;            // x is a long
    A::ArgType y;         // y is a string
  };

  union Date switch (short) { 
  case 1: string stringFormat;
  case 2: long digitalFormat; 
  default: DateStructure structFormat; 
  }; 

};
