module A {
  module B {
    module C {
      interface Bar {  };
    };
  };
};


module MainModule {

  typedef sequence< sequence<long> > myNestedSeq ;
  typedef long myArray[3][4];

  struct MyStruct {
    long num1, num2;
    string name;
  };

const long max = 127;

  exception MyEx {
    string msg;
  };


struct Node {
  string data;
  Node next;
};

interface Bar { };

exception MyException {
  string message;
};

interface class { };

typedef sequence<long> myLongSeq;

  interface Foo {
    attribute string name;
    long bar(in short a, 
             inout string s, 
             out Foo f);
  };


enum Color { red, blue, green };
typedef Foo MyFoo;

union MyUnion switch(long) {
  case 1: string name;
  case 2: long num;
  case 3: MyStruct str;
  case 4: MyFoo mf;
  default: boolean b;
};

};