+#if false
+ void ParseParallel (ModuleContainer module)
+ {
+ var sources = module.Compiler.SourceFiles;
+
+ Location.Initialize (sources);
+
+ var pcount = Environment.ProcessorCount;
+ var threads = new Thread[System.Math.Max (2, pcount - 1)];
+
+ for (int i = 0; i < threads.Length; ++i) {
+ var t = new Thread (l => {
+ var session = new ParserSession () {
+ //UseJayGlobalArrays = true,
+ };
+
+ var report = new Report (ctx, Report.Printer); // TODO: Implement flush at once printer
+
+ for (int ii = (int) l; ii < sources.Count; ii += threads.Length) {
+ Parse (sources[ii], module, session, report);
+ }
+
+ // TODO: Merge warning regions
+ });
+
+ t.Start (i);
+ threads[i] = t;
+ }
+
+ for (int t = 0; t < threads.Length; ++t) {
+ threads[t].Join ();
+ }
+ }
+#endif
+
+ public void Parse (SourceFile file, ModuleContainer module, ParserSession session, Report report)