import extensions; public singleton Program { inner() { Console.printLine(new CallStack()) } middle() { self.inner() } outer() { self.middle() } // program entry point function() { Program.outer() } }