+// global context can contain functions,\r
+// structs, global variables and namespaces\r
+var global1 : int;\r
+var global2 : double = 123.45;\r
+\r
+func globalFunc() : void {\r
+ //puts("Hello\n");\r
+}\r
+\r
+// structs and functions can be declared generic\r
+// by providing a list of placeholder typenames\r
+struct S1<T1, T2> {\r
+ t1: T1;\r
+ t2: T1;\r
+\r
+ m1() : T2 {\r
+ return this->t1 + this->t2;\r
+ }\r
+}\r
+\r
+struct S2 {\r
+ s: char *;\r
+ abc(): S2 { }\r
+ xyz(): S2 { }\r
+}\r
+\r
+func generic1<A>(a1 : A, a2 : A) : A {\r
+ return a1 + a2;\r
+}\r
+\r
+// namespaces can contain everything that\r
+// the global context can\r
+\r