func puts(str : char*) : void; namespace N1 { func f1() : void { puts("Hello\n"); } namespace N2 { struct S1 { i1 : int; i2 : int; i3 : int; m1(i: int) : int { this->i3 = this->i1 * this->i2; N1::f1(); return this->i1 + this->i2; } } func f1() : void { var s1 : N1::N2::S1; s1.m1(123); } } } struct S1 { t1: T; t2: T; m1() : T { return this->t1 + this->t2; } } struct S2 { abc(): S2 { } xyz(): S2 { } } func generic1(a1 : A, a2 : A) : A { return a1 + a2; } func main(argc : int, argv : char**) : int { var s1 : N1::N2::S1; var s2 : N1::N2::S1; var s3 : N1::N2::S1; s1.i1 = 123; s1.i2 = 456; s1.m1(s2.m1(s3.m1(89))); N1::N2::f1(); var s4 : S1; s4.t1 = 123; s4.t2 = 456; s4.m1(); generic1(1, 2); generic1(3.4, 5.6); var s: S2; s.abc().xyz(); return 0; }