enum Color { black, white, green, blue, red };

typedef short ArrayShort[10];

typedef sequence<short> SequenceShort;

struct BasicStruct {
  short m_short;
  unsigned short m_ushort;
  long m_long;
  unsigned long m_ulong;
  float m_float;
  double m_double;
  boolean m_boolean;
  octet m_octet;
  char m_char;
  string m_string;
  TypeCode m_typecode;
  any m_any;

  Color m_color;
};

struct ComplexStruct {
  BasicStruct member1;
  ArrayShort  member2;
  SequenceShort  member3;
};

union Union_UShort switch(unsigned short) {
  case 0: short m_short;
  case 1: unsigned short m_ushort;
  case 2: long m_long;
  case 3: unsigned long m_ulong;
  case 4: float m_float;
  case 5: double m_double;
  case 6: boolean m_boolean;
  case 7: octet m_octet;
  case 8: char m_char;
  case 9: string m_string;
  case 10: TypeCode m_typecode;
  case 11: any m_any;

  case 12: Color m_color;
  case 13: ArrayShort m_array;
  case 14: SequenceShort m_sequence;
  case 15: BasicStruct m_basic_struct;
  default: ComplexStruct m_complex_struct;
};
