Merge: doc: fixed some typos and other misc. corrections
[nit.git] / c_src / nitc__loader.sep.1.c
1 #include "nitc__loader.sep.0.h"
2 /* method loader$ToolContext$opt_path for (self: ToolContext): OptionArray */
3 val* nitc__loader___ToolContext___opt_path(val* self) {
4 val* var /* : OptionArray */;
5 val* var1 /* : OptionArray */;
6 var1 = self->attrs[COLOR_nitc__loader__ToolContext___opt_path].val; /* _opt_path on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 if(catchStack.cursor >= 0){
9 longjmp(catchStack.envs[catchStack.cursor], 1);
10 }
11 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_path");
12 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 44);
13 fatal_exit(1);
14 }
15 var = var1;
16 RET_LABEL:;
17 return var;
18 }
19 /* method loader$ToolContext$opt_only_metamodel for (self: ToolContext): OptionBool */
20 val* nitc__loader___ToolContext___opt_only_metamodel(val* self) {
21 val* var /* : OptionBool */;
22 val* var1 /* : OptionBool */;
23 var1 = self->attrs[COLOR_nitc__loader__ToolContext___opt_only_metamodel].val; /* _opt_only_metamodel on <self:ToolContext> */
24 if (unlikely(var1 == NULL)) {
25 if(catchStack.cursor >= 0){
26 longjmp(catchStack.envs[catchStack.cursor], 1);
27 }
28 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_metamodel");
29 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 47);
30 fatal_exit(1);
31 }
32 var = var1;
33 RET_LABEL:;
34 return var;
35 }
36 /* method loader$ToolContext$opt_only_parse for (self: ToolContext): OptionBool */
37 val* nitc__loader___ToolContext___opt_only_parse(val* self) {
38 val* var /* : OptionBool */;
39 val* var1 /* : OptionBool */;
40 var1 = self->attrs[COLOR_nitc__loader__ToolContext___opt_only_parse].val; /* _opt_only_parse on <self:ToolContext> */
41 if (unlikely(var1 == NULL)) {
42 if(catchStack.cursor >= 0){
43 longjmp(catchStack.envs[catchStack.cursor], 1);
44 }
45 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_parse");
46 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 50);
47 fatal_exit(1);
48 }
49 var = var1;
50 RET_LABEL:;
51 return var;
52 }
53 /* method loader$ToolContext$init for (self: ToolContext) */
54 void nitc__loader___ToolContext___core__kernel__Object__init(val* self) {
55 val* var /* : OptionContext */;
56 val* var2 /* : OptionContext */;
57 val* var3 /* : OptionArray */;
58 val* var5 /* : OptionArray */;
59 val* var6 /* : OptionBool */;
60 val* var8 /* : OptionBool */;
61 val* var9 /* : OptionBool */;
62 val* var11 /* : OptionBool */;
63 val* var12 /* : Array[Option] */;
64 val* var13 /* : NativeArray[Option] */;
65 {
66 ((void(*)(val* self))(self->class->vft[COLOR_nitc__loader___ToolContext___core__kernel__Object__init]))(self); /* init on <self:ToolContext>*/
67 }
68 {
69 { /* Inline toolcontext$ToolContext$option_context (self) on <self:ToolContext> */
70 var2 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
71 if (unlikely(var2 == NULL)) {
72 if(catchStack.cursor >= 0){
73 longjmp(catchStack.envs[catchStack.cursor], 1);
74 }
75 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
76 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 357);
77 fatal_exit(1);
78 }
79 var = var2;
80 RET_LABEL1:(void)0;
81 }
82 }
83 {
84 { /* Inline loader$ToolContext$opt_path (self) on <self:ToolContext> */
85 var5 = self->attrs[COLOR_nitc__loader__ToolContext___opt_path].val; /* _opt_path on <self:ToolContext> */
86 if (unlikely(var5 == NULL)) {
87 if(catchStack.cursor >= 0){
88 longjmp(catchStack.envs[catchStack.cursor], 1);
89 }
90 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_path");
91 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 44);
92 fatal_exit(1);
93 }
94 var3 = var5;
95 RET_LABEL4:(void)0;
96 }
97 }
98 {
99 { /* Inline loader$ToolContext$opt_only_parse (self) on <self:ToolContext> */
100 var8 = self->attrs[COLOR_nitc__loader__ToolContext___opt_only_parse].val; /* _opt_only_parse on <self:ToolContext> */
101 if (unlikely(var8 == NULL)) {
102 if(catchStack.cursor >= 0){
103 longjmp(catchStack.envs[catchStack.cursor], 1);
104 }
105 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_parse");
106 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 50);
107 fatal_exit(1);
108 }
109 var6 = var8;
110 RET_LABEL7:(void)0;
111 }
112 }
113 {
114 { /* Inline loader$ToolContext$opt_only_metamodel (self) on <self:ToolContext> */
115 var11 = self->attrs[COLOR_nitc__loader__ToolContext___opt_only_metamodel].val; /* _opt_only_metamodel on <self:ToolContext> */
116 if (unlikely(var11 == NULL)) {
117 if(catchStack.cursor >= 0){
118 longjmp(catchStack.envs[catchStack.cursor], 1);
119 }
120 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_metamodel");
121 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 47);
122 fatal_exit(1);
123 }
124 var9 = var11;
125 RET_LABEL10:(void)0;
126 }
127 }
128 var12 = NEW_core__Array(&type_core__Array__opts__Option);
129 { /* var12 = array_instance Array[Option] */
130 var13 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__opts__Option);
131 ((struct instance_core__NativeArray*)var13)->values[0] = (val*) var3;
132 ((struct instance_core__NativeArray*)var13)->values[1] = (val*) var6;
133 ((struct instance_core__NativeArray*)var13)->values[2] = (val*) var9;
134 {
135 ((void(*)(val* self, val* p0, long p1))(var12->class->vft[COLOR_core__array__Array__with_native]))(var12, var13, 3l); /* with_native on <var12:Array[Option]>*/
136 }
137 }
138 {
139 opts___opts__OptionContext___add_option(var, var12); /* Direct call opts$OptionContext$add_option on <var:OptionContext>*/
140 }
141 RET_LABEL:;
142 }
143 /* method loader$ModelBuilder$init for (self: ModelBuilder) */
144 void nitc__loader___ModelBuilder___core__kernel__Object__init(val* self) {
145 val* var /* : Array[String] */;
146 val* var2 /* : Array[String] */;
147 val* var3 /* : ToolContext */;
148 val* var5 /* : ToolContext */;
149 val* var6 /* : OptionArray */;
150 val* var8 /* : OptionArray */;
151 val* var9 /* : nullable Object */;
152 val* var11 /* : nullable Object */;
153 static val* varonce;
154 val* var12 /* : String */;
155 char* var13 /* : CString */;
156 val* var14 /* : String */;
157 val* var15 /* : nullable Int */;
158 val* var16 /* : nullable Int */;
159 val* var17 /* : nullable Bool */;
160 val* var18 /* : nullable Bool */;
161 val* var19 /* : String */;
162 val* var_path_env /* var path_env: String */;
163 short int var20 /* : Bool */;
164 short int var21 /* : Bool */;
165 val* var22 /* : Array[String] */;
166 val* var24 /* : Array[String] */;
167 val* var25 /* : Array[String] */;
168 val* var26 /* : Pattern */;
169 val* var27 /* : ToolContext */;
170 val* var29 /* : ToolContext */;
171 val* var30 /* : nullable String */;
172 val* var32 /* : nullable String */;
173 val* var_nit_dir /* var nit_dir: nullable String */;
174 short int var33 /* : Bool */;
175 short int var34 /* : Bool */;
176 val* var_other /* var other: nullable Object */;
177 short int var36 /* : Bool */;
178 short int var37 /* : Bool */;
179 static val* varonce38;
180 val* var39 /* : String */;
181 char* var40 /* : CString */;
182 val* var41 /* : String */;
183 val* var42 /* : nullable Int */;
184 val* var43 /* : nullable Int */;
185 val* var44 /* : nullable Bool */;
186 val* var45 /* : nullable Bool */;
187 val* var46 /* : String */;
188 val* var_libname /* var libname: String */;
189 short int var47 /* : Bool */;
190 val* var48 /* : Array[String] */;
191 val* var50 /* : Array[String] */;
192 static val* varonce51;
193 val* var52 /* : String */;
194 char* var53 /* : CString */;
195 val* var54 /* : String */;
196 val* var55 /* : nullable Int */;
197 val* var56 /* : nullable Int */;
198 val* var57 /* : nullable Bool */;
199 val* var58 /* : nullable Bool */;
200 val* var59 /* : String */;
201 short int var60 /* : Bool */;
202 val* var61 /* : Array[String] */;
203 val* var63 /* : Array[String] */;
204 {
205 ((void(*)(val* self))(self->class->vft[COLOR_nitc__loader___ModelBuilder___core__kernel__Object__init]))(self); /* init on <self:ModelBuilder>*/
206 }
207 {
208 { /* Inline loader$ModelBuilder$paths (self) on <self:ModelBuilder> */
209 var2 = self->attrs[COLOR_nitc__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
210 if (unlikely(var2 == NULL)) {
211 if(catchStack.cursor >= 0){
212 longjmp(catchStack.envs[catchStack.cursor], 1);
213 }
214 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
215 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 213);
216 fatal_exit(1);
217 }
218 var = var2;
219 RET_LABEL1:(void)0;
220 }
221 }
222 {
223 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
224 var5 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
225 if (unlikely(var5 == NULL)) {
226 if(catchStack.cursor >= 0){
227 longjmp(catchStack.envs[catchStack.cursor], 1);
228 }
229 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
230 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
231 fatal_exit(1);
232 }
233 var3 = var5;
234 RET_LABEL4:(void)0;
235 }
236 }
237 {
238 { /* Inline loader$ToolContext$opt_path (var3) on <var3:ToolContext> */
239 var8 = var3->attrs[COLOR_nitc__loader__ToolContext___opt_path].val; /* _opt_path on <var3:ToolContext> */
240 if (unlikely(var8 == NULL)) {
241 if(catchStack.cursor >= 0){
242 longjmp(catchStack.envs[catchStack.cursor], 1);
243 }
244 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_path");
245 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 44);
246 fatal_exit(1);
247 }
248 var6 = var8;
249 RET_LABEL7:(void)0;
250 }
251 }
252 {
253 { /* Inline opts$Option$value (var6) on <var6:OptionArray> */
254 var11 = var6->attrs[COLOR_opts__Option___value].val; /* _value on <var6:OptionArray> */
255 var9 = var11;
256 RET_LABEL10:(void)0;
257 }
258 }
259 {
260 core___core__Sequence___append(var, var9); /* Direct call abstract_collection$Sequence$append on <var:Array[String]>*/
261 }
262 if (likely(varonce!=NULL)) {
263 var12 = varonce;
264 } else {
265 var13 = "NIT_PATH";
266 var15 = (val*)(8l<<2|1);
267 var16 = (val*)(8l<<2|1);
268 var17 = (val*)((long)(0)<<2|3);
269 var18 = (val*)((long)(0)<<2|3);
270 var14 = core__flat___CString___to_s_unsafe(var13, var15, var16, var17, var18);
271 var12 = var14;
272 varonce = var12;
273 }
274 {
275 var19 = core__environ___String___environ(var12);
276 }
277 var_path_env = var19;
278 {
279 var20 = ((short int(*)(val* self))(var_path_env->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var_path_env); /* is_empty on <var_path_env:String>*/
280 }
281 var21 = !var20;
282 if (var21){
283 {
284 { /* Inline loader$ModelBuilder$paths (self) on <self:ModelBuilder> */
285 var24 = self->attrs[COLOR_nitc__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
286 if (unlikely(var24 == NULL)) {
287 if(catchStack.cursor >= 0){
288 longjmp(catchStack.envs[catchStack.cursor], 1);
289 }
290 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
291 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 213);
292 fatal_exit(1);
293 }
294 var22 = var24;
295 RET_LABEL23:(void)0;
296 }
297 }
298 {
299 var26 = (val*)((long)(':')<<2|2);
300 var25 = core__string_search___Text___split_with(var_path_env, var26);
301 }
302 {
303 core___core__Sequence___append(var22, var25); /* Direct call abstract_collection$Sequence$append on <var22:Array[String]>*/
304 }
305 } else {
306 }
307 {
308 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
309 var29 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
310 if (unlikely(var29 == NULL)) {
311 if(catchStack.cursor >= 0){
312 longjmp(catchStack.envs[catchStack.cursor], 1);
313 }
314 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
315 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
316 fatal_exit(1);
317 }
318 var27 = var29;
319 RET_LABEL28:(void)0;
320 }
321 }
322 {
323 { /* Inline toolcontext$ToolContext$nit_dir (var27) on <var27:ToolContext> */
324 var32 = var27->attrs[COLOR_nitc__toolcontext__ToolContext___nit_dir].val; /* _nit_dir on <var27:ToolContext> */
325 var30 = var32;
326 RET_LABEL31:(void)0;
327 }
328 }
329 var_nit_dir = var30;
330 if (var_nit_dir == NULL) {
331 var33 = 0; /* is null */
332 } else {
333 var33 = 1; /* arg is null and recv is not */
334 }
335 if (0) {
336 { /* Inline kernel$Object$!= (var_nit_dir,((val*)NULL)) on <var_nit_dir:nullable String> */
337 var_other = ((val*)NULL);
338 {
339 var36 = ((short int(*)(val* self, val* p0))(var_nit_dir->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_nit_dir, var_other); /* == on <var_nit_dir:nullable String(String)>*/
340 }
341 var37 = !var36;
342 var34 = var37;
343 goto RET_LABEL35;
344 RET_LABEL35:(void)0;
345 }
346 var33 = var34;
347 }
348 if (var33){
349 if (likely(varonce38!=NULL)) {
350 var39 = varonce38;
351 } else {
352 var40 = "lib";
353 var42 = (val*)(3l<<2|1);
354 var43 = (val*)(3l<<2|1);
355 var44 = (val*)((long)(0)<<2|3);
356 var45 = (val*)((long)(0)<<2|3);
357 var41 = core__flat___CString___to_s_unsafe(var40, var42, var43, var44, var45);
358 var39 = var41;
359 varonce38 = var39;
360 }
361 {
362 var46 = core__file___String____47d(var_nit_dir, var39);
363 }
364 var_libname = var46;
365 {
366 var47 = core__file___Text___file_exists(var_libname);
367 }
368 if (var47){
369 {
370 { /* Inline loader$ModelBuilder$paths (self) on <self:ModelBuilder> */
371 var50 = self->attrs[COLOR_nitc__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
372 if (unlikely(var50 == NULL)) {
373 if(catchStack.cursor >= 0){
374 longjmp(catchStack.envs[catchStack.cursor], 1);
375 }
376 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
377 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 213);
378 fatal_exit(1);
379 }
380 var48 = var50;
381 RET_LABEL49:(void)0;
382 }
383 }
384 {
385 core___core__Array___core__abstract_collection__SimpleCollection__add(var48, var_libname); /* Direct call array$Array$add on <var48:Array[String]>*/
386 }
387 } else {
388 }
389 if (likely(varonce51!=NULL)) {
390 var52 = varonce51;
391 } else {
392 var53 = "contrib";
393 var55 = (val*)(7l<<2|1);
394 var56 = (val*)(7l<<2|1);
395 var57 = (val*)((long)(0)<<2|3);
396 var58 = (val*)((long)(0)<<2|3);
397 var54 = core__flat___CString___to_s_unsafe(var53, var55, var56, var57, var58);
398 var52 = var54;
399 varonce51 = var52;
400 }
401 {
402 var59 = core__file___String____47d(var_nit_dir, var52);
403 }
404 var_libname = var59;
405 {
406 var60 = core__file___Text___file_exists(var_libname);
407 }
408 if (var60){
409 {
410 { /* Inline loader$ModelBuilder$paths (self) on <self:ModelBuilder> */
411 var63 = self->attrs[COLOR_nitc__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
412 if (unlikely(var63 == NULL)) {
413 if(catchStack.cursor >= 0){
414 longjmp(catchStack.envs[catchStack.cursor], 1);
415 }
416 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
417 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 213);
418 fatal_exit(1);
419 }
420 var61 = var63;
421 RET_LABEL62:(void)0;
422 }
423 }
424 {
425 core___core__Array___core__abstract_collection__SimpleCollection__add(var61, var_libname); /* Direct call array$Array$add on <var61:Array[String]>*/
426 }
427 } else {
428 }
429 } else {
430 }
431 RET_LABEL:;
432 }
433 /* method loader$ModelBuilder$parse for (self: ModelBuilder, Sequence[String]): Array[MModule] */
434 val* nitc__loader___ModelBuilder___parse(val* self, val* p0) {
435 val* var /* : Array[MModule] */;
436 val* var_modules /* var modules: Sequence[String] */;
437 val* var1 /* : Sys */;
438 long var2 /* : Int */;
439 long var4 /* : Int */;
440 long var_time0 /* var time0: Int */;
441 val* var5 /* : ToolContext */;
442 val* var7 /* : ToolContext */;
443 static val* varonce;
444 val* var8 /* : String */;
445 char* var9 /* : CString */;
446 val* var10 /* : String */;
447 val* var11 /* : nullable Int */;
448 val* var12 /* : nullable Int */;
449 val* var13 /* : nullable Bool */;
450 val* var14 /* : nullable Bool */;
451 val* var15 /* : ArraySet[MModule] */;
452 val* var_mmodules /* var mmodules: ArraySet[MModule] */;
453 val* var_ /* var : Sequence[String] */;
454 val* var16 /* : Iterator[nullable Object] */;
455 val* var_17 /* var : IndexedIterator[String] */;
456 short int var18 /* : Bool */;
457 val* var19 /* : nullable Object */;
458 val* var_a /* var a: String */;
459 val* var20 /* : nullable AModule */;
460 val* var_nmodule /* var nmodule: nullable AModule */;
461 short int var21 /* : Bool */;
462 short int var22 /* : Bool */;
463 val* var_other /* var other: nullable Object */;
464 short int var24 /* : Bool */;
465 short int var26 /* : Bool */;
466 val* var28 /* : nullable MModule */;
467 val* var30 /* : nullable MModule */;
468 val* var_mmodule /* var mmodule: nullable MModule */;
469 short int var31 /* : Bool */;
470 short int var32 /* : Bool */;
471 short int var34 /* : Bool */;
472 short int var36 /* : Bool */;
473 val* var37 /* : Sys */;
474 long var38 /* : Int */;
475 long var40 /* : Int */;
476 long var_time1 /* var time1: Int */;
477 val* var41 /* : ToolContext */;
478 val* var43 /* : ToolContext */;
479 val* var45 /* : NativeArray[String] */;
480 static val* varonce44;
481 static val* varonce46;
482 val* var47 /* : String */;
483 char* var48 /* : CString */;
484 val* var49 /* : String */;
485 val* var50 /* : nullable Int */;
486 val* var51 /* : nullable Int */;
487 val* var52 /* : nullable Bool */;
488 val* var53 /* : nullable Bool */;
489 static val* varonce54;
490 val* var55 /* : String */;
491 char* var56 /* : CString */;
492 val* var57 /* : String */;
493 val* var58 /* : nullable Int */;
494 val* var59 /* : nullable Int */;
495 val* var60 /* : nullable Bool */;
496 val* var61 /* : nullable Bool */;
497 long var62 /* : Int */;
498 short int var64 /* : Bool */;
499 int cltype;
500 int idtype;
501 const char* var_class_name;
502 long var65 /* : Int */;
503 val* var66 /* : String */;
504 val* var67 /* : String */;
505 val* var68 /* : ToolContext */;
506 val* var70 /* : ToolContext */;
507 short int var71 /* : Bool */;
508 val* var72 /* : ToolContext */;
509 val* var74 /* : ToolContext */;
510 val* var75 /* : OptionBool */;
511 val* var77 /* : OptionBool */;
512 val* var78 /* : nullable Object */;
513 val* var80 /* : nullable Object */;
514 short int var81 /* : Bool */;
515 val* var82 /* : ToolContext */;
516 val* var84 /* : ToolContext */;
517 static val* varonce85;
518 val* var86 /* : String */;
519 char* var87 /* : CString */;
520 val* var88 /* : String */;
521 val* var89 /* : nullable Int */;
522 val* var90 /* : nullable Int */;
523 val* var91 /* : nullable Bool */;
524 val* var92 /* : nullable Bool */;
525 val* var93 /* : ToolContext */;
526 val* var95 /* : ToolContext */;
527 val* var96 /* : Array[nullable Object] */;
528 var_modules = p0;
529 var1 = glob_sys;
530 {
531 { /* Inline time$Sys$get_time (var1) on <var1:Sys> */
532 struct nitni_instance* var_for_c_0;
533 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
534 var_for_c_0->value = var1;
535 var4 = core__time___Sys_get_time___impl(var_for_c_0);
536 var2 = var4;
537 goto RET_LABEL3;
538 RET_LABEL3:(void)0;
539 }
540 }
541 var_time0 = var2;
542 {
543 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
544 var7 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
545 if (unlikely(var7 == NULL)) {
546 if(catchStack.cursor >= 0){
547 longjmp(catchStack.envs[catchStack.cursor], 1);
548 }
549 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
550 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
551 fatal_exit(1);
552 }
553 var5 = var7;
554 RET_LABEL6:(void)0;
555 }
556 }
557 if (likely(varonce!=NULL)) {
558 var8 = varonce;
559 } else {
560 var9 = "*** PARSE ***";
561 var11 = (val*)(13l<<2|1);
562 var12 = (val*)(13l<<2|1);
563 var13 = (val*)((long)(0)<<2|3);
564 var14 = (val*)((long)(0)<<2|3);
565 var10 = core__flat___CString___to_s_unsafe(var9, var11, var12, var13, var14);
566 var8 = var10;
567 varonce = var8;
568 }
569 {
570 nitc___nitc__ToolContext___info(var5, var8, 1l); /* Direct call toolcontext$ToolContext$info on <var5:ToolContext>*/
571 }
572 var15 = NEW_core__ArraySet(&type_core__ArraySet__nitc__MModule);
573 {
574 core___core__ArraySet___core__kernel__Object__init(var15); /* Direct call array$ArraySet$init on <var15:ArraySet[MModule]>*/
575 }
576 var_mmodules = var15;
577 var_ = var_modules;
578 {
579 var16 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Sequence[String]>*/
580 }
581 var_17 = var16;
582 for(;;) {
583 {
584 var18 = ((short int(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_17); /* is_ok on <var_17:IndexedIterator[String]>*/
585 }
586 if (var18){
587 } else {
588 goto BREAK_label;
589 }
590 {
591 var19 = ((val*(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_17); /* item on <var_17:IndexedIterator[String]>*/
592 }
593 var_a = var19;
594 {
595 var20 = nitc__loader___ModelBuilder___load_module(self, var_a);
596 }
597 var_nmodule = var20;
598 if (var_nmodule == NULL) {
599 var21 = 1; /* is null */
600 } else {
601 var21 = 0; /* arg is null but recv is not */
602 }
603 if (0) {
604 { /* Inline kernel$Object$== (var_nmodule,((val*)NULL)) on <var_nmodule:nullable AModule> */
605 var_other = ((val*)NULL);
606 {
607 { /* Inline kernel$Object$is_same_instance (var_nmodule,var_other) on <var_nmodule:nullable AModule(AModule)> */
608 var26 = var_nmodule == var_other;
609 var24 = var26;
610 goto RET_LABEL25;
611 RET_LABEL25:(void)0;
612 }
613 }
614 var22 = var24;
615 goto RET_LABEL23;
616 RET_LABEL23:(void)0;
617 }
618 var21 = var22;
619 }
620 if (var21){
621 goto BREAK_label27;
622 } else {
623 }
624 {
625 { /* Inline loader$AModule$mmodule (var_nmodule) on <var_nmodule:nullable AModule(AModule)> */
626 var30 = var_nmodule->attrs[COLOR_nitc__loader__AModule___mmodule].val; /* _mmodule on <var_nmodule:nullable AModule(AModule)> */
627 var28 = var30;
628 RET_LABEL29:(void)0;
629 }
630 }
631 var_mmodule = var28;
632 if (var_mmodule == NULL) {
633 var31 = 1; /* is null */
634 } else {
635 var31 = 0; /* arg is null but recv is not */
636 }
637 if (0) {
638 { /* Inline kernel$Object$== (var_mmodule,((val*)NULL)) on <var_mmodule:nullable MModule> */
639 var_other = ((val*)NULL);
640 {
641 { /* Inline kernel$Object$is_same_instance (var_mmodule,var_other) on <var_mmodule:nullable MModule(MModule)> */
642 var36 = var_mmodule == var_other;
643 var34 = var36;
644 goto RET_LABEL35;
645 RET_LABEL35:(void)0;
646 }
647 }
648 var32 = var34;
649 goto RET_LABEL33;
650 RET_LABEL33:(void)0;
651 }
652 var31 = var32;
653 }
654 if (var31){
655 goto BREAK_label27;
656 } else {
657 }
658 {
659 core___core__ArraySet___core__abstract_collection__SimpleCollection__add(var_mmodules, var_mmodule); /* Direct call array$ArraySet$add on <var_mmodules:ArraySet[MModule]>*/
660 }
661 BREAK_label27: (void)0;
662 {
663 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_17); /* next on <var_17:IndexedIterator[String]>*/
664 }
665 }
666 BREAK_label: (void)0;
667 {
668 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_17); /* finish on <var_17:IndexedIterator[String]>*/
669 }
670 var37 = glob_sys;
671 {
672 { /* Inline time$Sys$get_time (var37) on <var37:Sys> */
673 struct nitni_instance* var_for_c_0;
674 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
675 var_for_c_0->value = var37;
676 var40 = core__time___Sys_get_time___impl(var_for_c_0);
677 var38 = var40;
678 goto RET_LABEL39;
679 RET_LABEL39:(void)0;
680 }
681 }
682 var_time1 = var38;
683 {
684 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
685 var43 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
686 if (unlikely(var43 == NULL)) {
687 if(catchStack.cursor >= 0){
688 longjmp(catchStack.envs[catchStack.cursor], 1);
689 }
690 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
691 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
692 fatal_exit(1);
693 }
694 var41 = var43;
695 RET_LABEL42:(void)0;
696 }
697 }
698 if (unlikely(varonce44==NULL)) {
699 var45 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
700 if (likely(varonce46!=NULL)) {
701 var47 = varonce46;
702 } else {
703 var48 = "*** END PARSE: ";
704 var50 = (val*)(15l<<2|1);
705 var51 = (val*)(15l<<2|1);
706 var52 = (val*)((long)(0)<<2|3);
707 var53 = (val*)((long)(0)<<2|3);
708 var49 = core__flat___CString___to_s_unsafe(var48, var50, var51, var52, var53);
709 var47 = var49;
710 varonce46 = var47;
711 }
712 ((struct instance_core__NativeArray*)var45)->values[0]=var47;
713 if (likely(varonce54!=NULL)) {
714 var55 = varonce54;
715 } else {
716 var56 = " ***";
717 var58 = (val*)(4l<<2|1);
718 var59 = (val*)(4l<<2|1);
719 var60 = (val*)((long)(0)<<2|3);
720 var61 = (val*)((long)(0)<<2|3);
721 var57 = core__flat___CString___to_s_unsafe(var56, var58, var59, var60, var61);
722 var55 = var57;
723 varonce54 = var55;
724 }
725 ((struct instance_core__NativeArray*)var45)->values[2]=var55;
726 } else {
727 var45 = varonce44;
728 varonce44 = NULL;
729 }
730 {
731 { /* Inline kernel$Int$- (var_time1,var_time0) on <var_time1:Int> */
732 /* Covariant cast for argument 0 (i) <var_time0:Int> isa OTHER */
733 /* <var_time0:Int> isa OTHER */
734 var64 = 1; /* easy <var_time0:Int> isa OTHER*/
735 if (unlikely(!var64)) {
736 var_class_name = type_core__Int.name;
737 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
738 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
739 fatal_exit(1);
740 }
741 var65 = var_time1 - var_time0;
742 var62 = var65;
743 goto RET_LABEL63;
744 RET_LABEL63:(void)0;
745 }
746 }
747 var66 = core__flat___Int___core__abstract_text__Object__to_s(var62);
748 ((struct instance_core__NativeArray*)var45)->values[1]=var66;
749 {
750 var67 = ((val*(*)(val* self))(var45->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var45); /* native_to_s on <var45:NativeArray[String]>*/
751 }
752 varonce44 = var45;
753 {
754 nitc___nitc__ToolContext___info(var41, var67, 2l); /* Direct call toolcontext$ToolContext$info on <var41:ToolContext>*/
755 }
756 {
757 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
758 var70 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
759 if (unlikely(var70 == NULL)) {
760 if(catchStack.cursor >= 0){
761 longjmp(catchStack.envs[catchStack.cursor], 1);
762 }
763 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
764 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
765 fatal_exit(1);
766 }
767 var68 = var70;
768 RET_LABEL69:(void)0;
769 }
770 }
771 {
772 var71 = nitc___nitc__ToolContext___check_errors(var68);
773 }
774 {
775 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
776 var74 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
777 if (unlikely(var74 == NULL)) {
778 if(catchStack.cursor >= 0){
779 longjmp(catchStack.envs[catchStack.cursor], 1);
780 }
781 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
782 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
783 fatal_exit(1);
784 }
785 var72 = var74;
786 RET_LABEL73:(void)0;
787 }
788 }
789 {
790 { /* Inline loader$ToolContext$opt_only_parse (var72) on <var72:ToolContext> */
791 var77 = var72->attrs[COLOR_nitc__loader__ToolContext___opt_only_parse].val; /* _opt_only_parse on <var72:ToolContext> */
792 if (unlikely(var77 == NULL)) {
793 if(catchStack.cursor >= 0){
794 longjmp(catchStack.envs[catchStack.cursor], 1);
795 }
796 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_parse");
797 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 50);
798 fatal_exit(1);
799 }
800 var75 = var77;
801 RET_LABEL76:(void)0;
802 }
803 }
804 {
805 { /* Inline opts$Option$value (var75) on <var75:OptionBool> */
806 var80 = var75->attrs[COLOR_opts__Option___value].val; /* _value on <var75:OptionBool> */
807 var78 = var80;
808 RET_LABEL79:(void)0;
809 }
810 }
811 var81 = (short int)((long)(var78)>>2);
812 if (var81){
813 {
814 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
815 var84 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
816 if (unlikely(var84 == NULL)) {
817 if(catchStack.cursor >= 0){
818 longjmp(catchStack.envs[catchStack.cursor], 1);
819 }
820 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
821 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
822 fatal_exit(1);
823 }
824 var82 = var84;
825 RET_LABEL83:(void)0;
826 }
827 }
828 if (likely(varonce85!=NULL)) {
829 var86 = varonce85;
830 } else {
831 var87 = "*** ONLY PARSE...";
832 var89 = (val*)(17l<<2|1);
833 var90 = (val*)(17l<<2|1);
834 var91 = (val*)((long)(0)<<2|3);
835 var92 = (val*)((long)(0)<<2|3);
836 var88 = core__flat___CString___to_s_unsafe(var87, var89, var90, var91, var92);
837 var86 = var88;
838 varonce85 = var86;
839 }
840 {
841 nitc___nitc__ToolContext___info(var82, var86, 1l); /* Direct call toolcontext$ToolContext$info on <var82:ToolContext>*/
842 }
843 {
844 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
845 var95 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
846 if (unlikely(var95 == NULL)) {
847 if(catchStack.cursor >= 0){
848 longjmp(catchStack.envs[catchStack.cursor], 1);
849 }
850 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
851 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
852 fatal_exit(1);
853 }
854 var93 = var95;
855 RET_LABEL94:(void)0;
856 }
857 }
858 {
859 nitc___nitc__ToolContext___quit(var93); /* Direct call toolcontext$ToolContext$quit on <var93:ToolContext>*/
860 }
861 } else {
862 }
863 {
864 var96 = core__array___Collection___to_a(var_mmodules);
865 }
866 var = var96;
867 goto RET_LABEL;
868 RET_LABEL:;
869 return var;
870 }
871 /* method loader$ModelBuilder$paths for (self: ModelBuilder): Array[String] */
872 val* nitc__loader___ModelBuilder___paths(val* self) {
873 val* var /* : Array[String] */;
874 val* var1 /* : Array[String] */;
875 var1 = self->attrs[COLOR_nitc__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
876 if (unlikely(var1 == NULL)) {
877 if(catchStack.cursor >= 0){
878 longjmp(catchStack.envs[catchStack.cursor], 1);
879 }
880 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
881 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 213);
882 fatal_exit(1);
883 }
884 var = var1;
885 RET_LABEL:;
886 return var;
887 }
888 /* method loader$ModelBuilder$search_mmodule_by_name for (self: ModelBuilder, nullable ANode, nullable MGroup, String): nullable MModule */
889 val* nitc__loader___ModelBuilder___search_mmodule_by_name(val* self, val* p0, val* p1, val* p2) {
890 val* var /* : nullable MModule */;
891 val* var_anode /* var anode: nullable ANode */;
892 val* var_mgroup /* var mgroup: nullable MGroup */;
893 val* var_name /* var name: String */;
894 val* var_c /* var c: nullable MGroup */;
895 short int var1 /* : Bool */;
896 short int var2 /* : Bool */;
897 val* var_other /* var other: nullable Object */;
898 short int var4 /* : Bool */;
899 short int var5 /* : Bool */;
900 val* var6 /* : MPackage */;
901 val* var8 /* : MPackage */;
902 val* var9 /* : nullable MGroup */;
903 val* var11 /* : nullable MGroup */;
904 val* var_r /* var r: nullable MGroup */;
905 short int var12 /* : Bool */;
906 short int var13 /* : Bool */;
907 short int var15 /* : Bool */;
908 short int var16 /* : Bool */;
909 val* var17 /* : Array[MModule] */;
910 val* var_res /* var res: Array[MModule] */;
911 short int var18 /* : Bool */;
912 val* var19 /* : nullable Object */;
913 val* var20 /* : Array[String] */;
914 val* var22 /* : Array[String] */;
915 val* var_lookpaths /* var lookpaths: Array[String] */;
916 short int var23 /* : Bool */;
917 short int var24 /* : Bool */;
918 short int var26 /* : Bool */;
919 short int var27 /* : Bool */;
920 val* var28 /* : MPackage */;
921 val* var30 /* : MPackage */;
922 val* var31 /* : nullable MGroup */;
923 val* var33 /* : nullable MGroup */;
924 val* var34 /* : nullable String */;
925 val* var_dirname /* var dirname: nullable String */;
926 short int var35 /* : Bool */;
927 short int var36 /* : Bool */;
928 short int var38 /* : Bool */;
929 short int var39 /* : Bool */;
930 static val* varonce;
931 val* var40 /* : String */;
932 char* var41 /* : CString */;
933 val* var42 /* : String */;
934 val* var43 /* : nullable Int */;
935 val* var44 /* : nullable Int */;
936 val* var45 /* : nullable Bool */;
937 val* var46 /* : nullable Bool */;
938 val* var47 /* : String */;
939 val* var48 /* : String */;
940 short int var49 /* : Bool */;
941 short int var50 /* : Bool */;
942 short int var51 /* : Bool */;
943 short int var_ /* var : Bool */;
944 short int var52 /* : Bool */;
945 val* var53 /* : Array[nullable Object] */;
946 val* var_loc /* var loc: nullable Object */;
947 short int var54 /* : Bool */;
948 short int var55 /* : Bool */;
949 short int var57 /* : Bool */;
950 short int var58 /* : Bool */;
951 val* var59 /* : Location */;
952 val* var60 /* : nullable MModule */;
953 val* var_candidate /* var candidate: nullable MModule */;
954 short int var61 /* : Bool */;
955 short int var62 /* : Bool */;
956 val* var_other64 /* var other: nullable Object */;
957 short int var65 /* : Bool */;
958 short int var67 /* : Bool */;
959 short int var68 /* : Bool */;
960 short int var69 /* : Bool */;
961 short int var71 /* : Bool */;
962 short int var72 /* : Bool */;
963 val* var74 /* : NativeArray[String] */;
964 static val* varonce73;
965 static val* varonce75;
966 val* var76 /* : String */;
967 char* var77 /* : CString */;
968 val* var78 /* : String */;
969 val* var79 /* : nullable Int */;
970 val* var80 /* : nullable Int */;
971 val* var81 /* : nullable Bool */;
972 val* var82 /* : nullable Bool */;
973 static val* varonce83;
974 val* var84 /* : String */;
975 char* var85 /* : CString */;
976 val* var86 /* : String */;
977 val* var87 /* : nullable Int */;
978 val* var88 /* : nullable Int */;
979 val* var89 /* : nullable Bool */;
980 val* var90 /* : nullable Bool */;
981 static val* varonce91;
982 val* var92 /* : String */;
983 char* var93 /* : CString */;
984 val* var94 /* : String */;
985 val* var95 /* : nullable Int */;
986 val* var96 /* : nullable Int */;
987 val* var97 /* : nullable Bool */;
988 val* var98 /* : nullable Bool */;
989 static val* varonce99;
990 val* var100 /* : String */;
991 char* var101 /* : CString */;
992 val* var102 /* : String */;
993 val* var103 /* : nullable Int */;
994 val* var104 /* : nullable Int */;
995 val* var105 /* : nullable Bool */;
996 val* var106 /* : nullable Bool */;
997 val* var107 /* : String */;
998 val* var109 /* : String */;
999 static val* varonce110;
1000 val* var111 /* : String */;
1001 char* var112 /* : CString */;
1002 val* var113 /* : String */;
1003 val* var114 /* : nullable Int */;
1004 val* var115 /* : nullable Int */;
1005 val* var116 /* : nullable Bool */;
1006 val* var117 /* : nullable Bool */;
1007 val* var118 /* : String */;
1008 val* var119 /* : String */;
1009 val* var121 /* : NativeArray[String] */;
1010 static val* varonce120;
1011 static val* varonce122;
1012 val* var123 /* : String */;
1013 char* var124 /* : CString */;
1014 val* var125 /* : String */;
1015 val* var126 /* : nullable Int */;
1016 val* var127 /* : nullable Int */;
1017 val* var128 /* : nullable Bool */;
1018 val* var129 /* : nullable Bool */;
1019 static val* varonce130;
1020 val* var131 /* : String */;
1021 char* var132 /* : CString */;
1022 val* var133 /* : String */;
1023 val* var134 /* : nullable Int */;
1024 val* var135 /* : nullable Int */;
1025 val* var136 /* : nullable Bool */;
1026 val* var137 /* : nullable Bool */;
1027 static val* varonce138;
1028 val* var139 /* : String */;
1029 char* var140 /* : CString */;
1030 val* var141 /* : String */;
1031 val* var142 /* : nullable Int */;
1032 val* var143 /* : nullable Int */;
1033 val* var144 /* : nullable Bool */;
1034 val* var145 /* : nullable Bool */;
1035 static val* varonce146;
1036 val* var147 /* : String */;
1037 char* var148 /* : CString */;
1038 val* var149 /* : String */;
1039 val* var150 /* : nullable Int */;
1040 val* var151 /* : nullable Int */;
1041 val* var152 /* : nullable Bool */;
1042 val* var153 /* : nullable Bool */;
1043 val* var154 /* : String */;
1044 val* var155 /* : String */;
1045 var_anode = p0;
1046 var_mgroup = p1;
1047 var_name = p2;
1048 var_c = var_mgroup;
1049 if (var_c == NULL) {
1050 var1 = 0; /* is null */
1051 } else {
1052 var1 = 1; /* arg is null and recv is not */
1053 }
1054 if (0) {
1055 { /* Inline kernel$Object$!= (var_c,((val*)NULL)) on <var_c:nullable MGroup> */
1056 var_other = ((val*)NULL);
1057 {
1058 var4 = ((short int(*)(val* self, val* p0))(var_c->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_c, var_other); /* == on <var_c:nullable MGroup(MGroup)>*/
1059 }
1060 var5 = !var4;
1061 var2 = var5;
1062 goto RET_LABEL3;
1063 RET_LABEL3:(void)0;
1064 }
1065 var1 = var2;
1066 }
1067 if (var1){
1068 {
1069 { /* Inline mpackage$MGroup$mpackage (var_c) on <var_c:nullable MGroup(MGroup)> */
1070 var8 = var_c->attrs[COLOR_nitc__mpackage__MGroup___mpackage].val; /* _mpackage on <var_c:nullable MGroup(MGroup)> */
1071 if (unlikely(var8 == NULL)) {
1072 if(catchStack.cursor >= 0){
1073 longjmp(catchStack.envs[catchStack.cursor], 1);
1074 }
1075 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpackage");
1076 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 76);
1077 fatal_exit(1);
1078 }
1079 var6 = var8;
1080 RET_LABEL7:(void)0;
1081 }
1082 }
1083 {
1084 { /* Inline mpackage$MPackage$root (var6) on <var6:MPackage> */
1085 var11 = var6->attrs[COLOR_nitc__mpackage__MPackage___root].val; /* _root on <var6:MPackage> */
1086 var9 = var11;
1087 RET_LABEL10:(void)0;
1088 }
1089 }
1090 var_r = var9;
1091 if (var_r == NULL) {
1092 var12 = 0; /* is null */
1093 } else {
1094 var12 = 1; /* arg is null and recv is not */
1095 }
1096 if (0) {
1097 { /* Inline kernel$Object$!= (var_r,((val*)NULL)) on <var_r:nullable MGroup> */
1098 var_other = ((val*)NULL);
1099 {
1100 var15 = ((short int(*)(val* self, val* p0))(var_r->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_r, var_other); /* == on <var_r:nullable MGroup(MGroup)>*/
1101 }
1102 var16 = !var15;
1103 var13 = var16;
1104 goto RET_LABEL14;
1105 RET_LABEL14:(void)0;
1106 }
1107 var12 = var13;
1108 }
1109 if (unlikely(!var12)) {
1110 if(catchStack.cursor >= 0){
1111 longjmp(catchStack.envs[catchStack.cursor], 1);
1112 }
1113 PRINT_ERROR("Runtime error: %s", "Assert failed");
1114 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 229);
1115 fatal_exit(1);
1116 }
1117 {
1118 nitc__loader___ModelBuilder___scan_group(self, var_r); /* Direct call loader$ModelBuilder$scan_group on <self:ModelBuilder>*/
1119 }
1120 {
1121 var17 = nitc__loader___MGroup___mmodules_by_name(var_r, var_name);
1122 }
1123 var_res = var17;
1124 {
1125 var18 = core___core__Collection___not_empty(var_res);
1126 }
1127 if (var18){
1128 {
1129 var19 = core___core__SequenceRead___Collection__first(var_res);
1130 }
1131 var = var19;
1132 goto RET_LABEL;
1133 } else {
1134 }
1135 } else {
1136 }
1137 {
1138 { /* Inline loader$ModelBuilder$paths (self) on <self:ModelBuilder> */
1139 var22 = self->attrs[COLOR_nitc__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
1140 if (unlikely(var22 == NULL)) {
1141 if(catchStack.cursor >= 0){
1142 longjmp(catchStack.envs[catchStack.cursor], 1);
1143 }
1144 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
1145 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 213);
1146 fatal_exit(1);
1147 }
1148 var20 = var22;
1149 RET_LABEL21:(void)0;
1150 }
1151 }
1152 var_lookpaths = var20;
1153 if (var_mgroup == NULL) {
1154 var23 = 0; /* is null */
1155 } else {
1156 var23 = 1; /* arg is null and recv is not */
1157 }
1158 if (0) {
1159 { /* Inline kernel$Object$!= (var_mgroup,((val*)NULL)) on <var_mgroup:nullable MGroup> */
1160 var_other = ((val*)NULL);
1161 {
1162 var26 = ((short int(*)(val* self, val* p0))(var_mgroup->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mgroup, var_other); /* == on <var_mgroup:nullable MGroup(MGroup)>*/
1163 }
1164 var27 = !var26;
1165 var24 = var27;
1166 goto RET_LABEL25;
1167 RET_LABEL25:(void)0;
1168 }
1169 var23 = var24;
1170 }
1171 if (var23){
1172 {
1173 { /* Inline mpackage$MGroup$mpackage (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
1174 var30 = var_mgroup->attrs[COLOR_nitc__mpackage__MGroup___mpackage].val; /* _mpackage on <var_mgroup:nullable MGroup(MGroup)> */
1175 if (unlikely(var30 == NULL)) {
1176 if(catchStack.cursor >= 0){
1177 longjmp(catchStack.envs[catchStack.cursor], 1);
1178 }
1179 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpackage");
1180 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 76);
1181 fatal_exit(1);
1182 }
1183 var28 = var30;
1184 RET_LABEL29:(void)0;
1185 }
1186 }
1187 {
1188 { /* Inline mpackage$MPackage$root (var28) on <var28:MPackage> */
1189 var33 = var28->attrs[COLOR_nitc__mpackage__MPackage___root].val; /* _root on <var28:MPackage> */
1190 var31 = var33;
1191 RET_LABEL32:(void)0;
1192 }
1193 }
1194 if (var31 == NULL) {
1195 if(catchStack.cursor >= 0){
1196 longjmp(catchStack.envs[catchStack.cursor], 1);
1197 }
1198 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1199 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 241);
1200 fatal_exit(1);
1201 } else {
1202 var34 = nitc___nitc__MGroup___filepath(var31);
1203 }
1204 var_dirname = var34;
1205 if (var_dirname == NULL) {
1206 var35 = 0; /* is null */
1207 } else {
1208 var35 = 1; /* arg is null and recv is not */
1209 }
1210 if (0) {
1211 { /* Inline kernel$Object$!= (var_dirname,((val*)NULL)) on <var_dirname:nullable String> */
1212 var_other = ((val*)NULL);
1213 {
1214 var38 = ((short int(*)(val* self, val* p0))(var_dirname->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_dirname, var_other); /* == on <var_dirname:nullable String(String)>*/
1215 }
1216 var39 = !var38;
1217 var36 = var39;
1218 goto RET_LABEL37;
1219 RET_LABEL37:(void)0;
1220 }
1221 var35 = var36;
1222 }
1223 if (var35){
1224 if (likely(varonce!=NULL)) {
1225 var40 = varonce;
1226 } else {
1227 var41 = "..";
1228 var43 = (val*)(2l<<2|1);
1229 var44 = (val*)(2l<<2|1);
1230 var45 = (val*)((long)(0)<<2|3);
1231 var46 = (val*)((long)(0)<<2|3);
1232 var42 = core__flat___CString___to_s_unsafe(var41, var43, var44, var45, var46);
1233 var40 = var42;
1234 varonce = var40;
1235 }
1236 {
1237 var47 = core__file___String___join_path(var_dirname, var40);
1238 }
1239 {
1240 var48 = core__file___String___simplify_path(var47);
1241 }
1242 var_dirname = var48;
1243 {
1244 var50 = core___core__AbstractArrayRead___core__abstract_collection__Collection__has(var_lookpaths, var_dirname);
1245 }
1246 var51 = !var50;
1247 var_ = var51;
1248 if (var51){
1249 {
1250 var52 = core__file___Text___file_exists(var_dirname);
1251 }
1252 var49 = var52;
1253 } else {
1254 var49 = var_;
1255 }
1256 if (var49){
1257 {
1258 var53 = core__array___Collection___to_a(var_lookpaths);
1259 }
1260 var_lookpaths = var53;
1261 {
1262 core___core__Array___core__abstract_collection__SimpleCollection__add(var_lookpaths, var_dirname); /* Direct call array$Array$add on <var_lookpaths:Array[String]>*/
1263 }
1264 } else {
1265 }
1266 } else {
1267 }
1268 } else {
1269 }
1270 var_loc = ((val*)NULL);
1271 if (var_anode == NULL) {
1272 var54 = 0; /* is null */
1273 } else {
1274 var54 = 1; /* arg is null and recv is not */
1275 }
1276 if (0) {
1277 { /* Inline kernel$Object$!= (var_anode,((val*)NULL)) on <var_anode:nullable ANode> */
1278 var_other = ((val*)NULL);
1279 {
1280 var57 = ((short int(*)(val* self, val* p0))(var_anode->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_anode, var_other); /* == on <var_anode:nullable ANode(ANode)>*/
1281 }
1282 var58 = !var57;
1283 var55 = var58;
1284 goto RET_LABEL56;
1285 RET_LABEL56:(void)0;
1286 }
1287 var54 = var55;
1288 }
1289 if (var54){
1290 {
1291 var59 = ((val*(*)(val* self))(var_anode->class->vft[COLOR_nitc__parser_nodes__ANode__hot_location]))(var_anode); /* hot_location on <var_anode:nullable ANode(ANode)>*/
1292 }
1293 var_loc = var59;
1294 } else {
1295 }
1296 {
1297 var60 = nitc__loader___ModelBuilder___search_module_in_paths(self, var_loc, var_name, var_lookpaths);
1298 }
1299 var_candidate = var60;
1300 if (var_candidate == NULL) {
1301 var61 = 1; /* is null */
1302 } else {
1303 var61 = 0; /* arg is null but recv is not */
1304 }
1305 if (0) {
1306 { /* Inline kernel$Object$== (var_candidate,((val*)NULL)) on <var_candidate:nullable MModule> */
1307 var_other64 = ((val*)NULL);
1308 {
1309 { /* Inline kernel$Object$is_same_instance (var_candidate,var_other64) on <var_candidate:nullable MModule(MModule)> */
1310 var67 = var_candidate == var_other64;
1311 var65 = var67;
1312 goto RET_LABEL66;
1313 RET_LABEL66:(void)0;
1314 }
1315 }
1316 var62 = var65;
1317 goto RET_LABEL63;
1318 RET_LABEL63:(void)0;
1319 }
1320 var61 = var62;
1321 }
1322 if (var61){
1323 if (var_mgroup == NULL) {
1324 var68 = 0; /* is null */
1325 } else {
1326 var68 = 1; /* arg is null and recv is not */
1327 }
1328 if (0) {
1329 { /* Inline kernel$Object$!= (var_mgroup,((val*)NULL)) on <var_mgroup:nullable MGroup> */
1330 var_other = ((val*)NULL);
1331 {
1332 var71 = ((short int(*)(val* self, val* p0))(var_mgroup->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mgroup, var_other); /* == on <var_mgroup:nullable MGroup(MGroup)>*/
1333 }
1334 var72 = !var71;
1335 var69 = var72;
1336 goto RET_LABEL70;
1337 RET_LABEL70:(void)0;
1338 }
1339 var68 = var69;
1340 }
1341 if (var68){
1342 if (unlikely(varonce73==NULL)) {
1343 var74 = NEW_core__NativeArray((int)7l, &type_core__NativeArray__core__String);
1344 if (likely(varonce75!=NULL)) {
1345 var76 = varonce75;
1346 } else {
1347 var77 = "Error: cannot find module `";
1348 var79 = (val*)(27l<<2|1);
1349 var80 = (val*)(27l<<2|1);
1350 var81 = (val*)((long)(0)<<2|3);
1351 var82 = (val*)((long)(0)<<2|3);
1352 var78 = core__flat___CString___to_s_unsafe(var77, var79, var80, var81, var82);
1353 var76 = var78;
1354 varonce75 = var76;
1355 }
1356 ((struct instance_core__NativeArray*)var74)->values[0]=var76;
1357 if (likely(varonce83!=NULL)) {
1358 var84 = varonce83;
1359 } else {
1360 var85 = "` from `";
1361 var87 = (val*)(8l<<2|1);
1362 var88 = (val*)(8l<<2|1);
1363 var89 = (val*)((long)(0)<<2|3);
1364 var90 = (val*)((long)(0)<<2|3);
1365 var86 = core__flat___CString___to_s_unsafe(var85, var87, var88, var89, var90);
1366 var84 = var86;
1367 varonce83 = var84;
1368 }
1369 ((struct instance_core__NativeArray*)var74)->values[2]=var84;
1370 if (likely(varonce91!=NULL)) {
1371 var92 = varonce91;
1372 } else {
1373 var93 = "`. Tried: ";
1374 var95 = (val*)(10l<<2|1);
1375 var96 = (val*)(10l<<2|1);
1376 var97 = (val*)((long)(0)<<2|3);
1377 var98 = (val*)((long)(0)<<2|3);
1378 var94 = core__flat___CString___to_s_unsafe(var93, var95, var96, var97, var98);
1379 var92 = var94;
1380 varonce91 = var92;
1381 }
1382 ((struct instance_core__NativeArray*)var74)->values[4]=var92;
1383 if (likely(varonce99!=NULL)) {
1384 var100 = varonce99;
1385 } else {
1386 var101 = ".";
1387 var103 = (val*)(1l<<2|1);
1388 var104 = (val*)(1l<<2|1);
1389 var105 = (val*)((long)(0)<<2|3);
1390 var106 = (val*)((long)(0)<<2|3);
1391 var102 = core__flat___CString___to_s_unsafe(var101, var103, var104, var105, var106);
1392 var100 = var102;
1393 varonce99 = var100;
1394 }
1395 ((struct instance_core__NativeArray*)var74)->values[6]=var100;
1396 } else {
1397 var74 = varonce73;
1398 varonce73 = NULL;
1399 }
1400 ((struct instance_core__NativeArray*)var74)->values[1]=var_name;
1401 {
1402 { /* Inline mpackage$MGroup$name (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
1403 var109 = var_mgroup->attrs[COLOR_nitc__mpackage__MGroup___name].val; /* _name on <var_mgroup:nullable MGroup(MGroup)> */
1404 if (unlikely(var109 == NULL)) {
1405 if(catchStack.cursor >= 0){
1406 longjmp(catchStack.envs[catchStack.cursor], 1);
1407 }
1408 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1409 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 70);
1410 fatal_exit(1);
1411 }
1412 var107 = var109;
1413 RET_LABEL108:(void)0;
1414 }
1415 }
1416 ((struct instance_core__NativeArray*)var74)->values[3]=var107;
1417 if (likely(varonce110!=NULL)) {
1418 var111 = varonce110;
1419 } else {
1420 var112 = ", ";
1421 var114 = (val*)(2l<<2|1);
1422 var115 = (val*)(2l<<2|1);
1423 var116 = (val*)((long)(0)<<2|3);
1424 var117 = (val*)((long)(0)<<2|3);
1425 var113 = core__flat___CString___to_s_unsafe(var112, var114, var115, var116, var117);
1426 var111 = var113;
1427 varonce110 = var111;
1428 }
1429 {
1430 var118 = core__abstract_text___Collection___join(var_lookpaths, var111, ((val*)NULL));
1431 }
1432 ((struct instance_core__NativeArray*)var74)->values[5]=var118;
1433 {
1434 var119 = ((val*(*)(val* self))(var74->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var74); /* native_to_s on <var74:NativeArray[String]>*/
1435 }
1436 varonce73 = var74;
1437 {
1438 nitc___nitc__ModelBuilder___error(self, var_anode, var119); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
1439 }
1440 } else {
1441 if (unlikely(varonce120==NULL)) {
1442 var121 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
1443 if (likely(varonce122!=NULL)) {
1444 var123 = varonce122;
1445 } else {
1446 var124 = "Error: cannot find module `";
1447 var126 = (val*)(27l<<2|1);
1448 var127 = (val*)(27l<<2|1);
1449 var128 = (val*)((long)(0)<<2|3);
1450 var129 = (val*)((long)(0)<<2|3);
1451 var125 = core__flat___CString___to_s_unsafe(var124, var126, var127, var128, var129);
1452 var123 = var125;
1453 varonce122 = var123;
1454 }
1455 ((struct instance_core__NativeArray*)var121)->values[0]=var123;
1456 if (likely(varonce130!=NULL)) {
1457 var131 = varonce130;
1458 } else {
1459 var132 = "`. Tried: ";
1460 var134 = (val*)(10l<<2|1);
1461 var135 = (val*)(10l<<2|1);
1462 var136 = (val*)((long)(0)<<2|3);
1463 var137 = (val*)((long)(0)<<2|3);
1464 var133 = core__flat___CString___to_s_unsafe(var132, var134, var135, var136, var137);
1465 var131 = var133;
1466 varonce130 = var131;
1467 }
1468 ((struct instance_core__NativeArray*)var121)->values[2]=var131;
1469 if (likely(varonce138!=NULL)) {
1470 var139 = varonce138;
1471 } else {
1472 var140 = ".";
1473 var142 = (val*)(1l<<2|1);
1474 var143 = (val*)(1l<<2|1);
1475 var144 = (val*)((long)(0)<<2|3);
1476 var145 = (val*)((long)(0)<<2|3);
1477 var141 = core__flat___CString___to_s_unsafe(var140, var142, var143, var144, var145);
1478 var139 = var141;
1479 varonce138 = var139;
1480 }
1481 ((struct instance_core__NativeArray*)var121)->values[4]=var139;
1482 } else {
1483 var121 = varonce120;
1484 varonce120 = NULL;
1485 }
1486 ((struct instance_core__NativeArray*)var121)->values[1]=var_name;
1487 if (likely(varonce146!=NULL)) {
1488 var147 = varonce146;
1489 } else {
1490 var148 = ", ";
1491 var150 = (val*)(2l<<2|1);
1492 var151 = (val*)(2l<<2|1);
1493 var152 = (val*)((long)(0)<<2|3);
1494 var153 = (val*)((long)(0)<<2|3);
1495 var149 = core__flat___CString___to_s_unsafe(var148, var150, var151, var152, var153);
1496 var147 = var149;
1497 varonce146 = var147;
1498 }
1499 {
1500 var154 = core__abstract_text___Collection___join(var_lookpaths, var147, ((val*)NULL));
1501 }
1502 ((struct instance_core__NativeArray*)var121)->values[3]=var154;
1503 {
1504 var155 = ((val*(*)(val* self))(var121->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var121); /* native_to_s on <var121:NativeArray[String]>*/
1505 }
1506 varonce120 = var121;
1507 {
1508 nitc___nitc__ModelBuilder___error(self, var_anode, var155); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
1509 }
1510 }
1511 var = ((val*)NULL);
1512 goto RET_LABEL;
1513 } else {
1514 }
1515 var = var_candidate;
1516 goto RET_LABEL;
1517 RET_LABEL:;
1518 return var;
1519 }
1520 /* method loader$ModelBuilder$get_mmodule_by_name for (self: ModelBuilder, nullable ANode, nullable MGroup, String): nullable MModule */
1521 val* nitc__loader___ModelBuilder___get_mmodule_by_name(val* self, val* p0, val* p1, val* p2) {
1522 val* var /* : nullable MModule */;
1523 val* var_anode /* var anode: nullable ANode */;
1524 val* var_mgroup /* var mgroup: nullable MGroup */;
1525 val* var_name /* var name: String */;
1526 val* var1 /* : nullable MModule */;
1527 val* var_mmodule /* var mmodule: nullable MModule */;
1528 short int var2 /* : Bool */;
1529 short int var3 /* : Bool */;
1530 val* var_other /* var other: nullable Object */;
1531 short int var5 /* : Bool */;
1532 short int var7 /* : Bool */;
1533 val* var8 /* : nullable AModule */;
1534 val* var_ast /* var ast: nullable AModule */;
1535 short int var9 /* : Bool */;
1536 short int var10 /* : Bool */;
1537 short int var12 /* : Bool */;
1538 short int var14 /* : Bool */;
1539 var_anode = p0;
1540 var_mgroup = p1;
1541 var_name = p2;
1542 {
1543 var1 = nitc__loader___ModelBuilder___search_mmodule_by_name(self, var_anode, var_mgroup, var_name);
1544 }
1545 var_mmodule = var1;
1546 if (var_mmodule == NULL) {
1547 var2 = 1; /* is null */
1548 } else {
1549 var2 = 0; /* arg is null but recv is not */
1550 }
1551 if (0) {
1552 { /* Inline kernel$Object$== (var_mmodule,((val*)NULL)) on <var_mmodule:nullable MModule> */
1553 var_other = ((val*)NULL);
1554 {
1555 { /* Inline kernel$Object$is_same_instance (var_mmodule,var_other) on <var_mmodule:nullable MModule(MModule)> */
1556 var7 = var_mmodule == var_other;
1557 var5 = var7;
1558 goto RET_LABEL6;
1559 RET_LABEL6:(void)0;
1560 }
1561 }
1562 var3 = var5;
1563 goto RET_LABEL4;
1564 RET_LABEL4:(void)0;
1565 }
1566 var2 = var3;
1567 }
1568 if (var2){
1569 var = ((val*)NULL);
1570 goto RET_LABEL;
1571 } else {
1572 }
1573 {
1574 var8 = nitc__loader___MModule___load(var_mmodule, self);
1575 }
1576 var_ast = var8;
1577 if (var_ast == NULL) {
1578 var9 = 1; /* is null */
1579 } else {
1580 var9 = 0; /* arg is null but recv is not */
1581 }
1582 if (0) {
1583 { /* Inline kernel$Object$== (var_ast,((val*)NULL)) on <var_ast:nullable AModule> */
1584 var_other = ((val*)NULL);
1585 {
1586 { /* Inline kernel$Object$is_same_instance (var_ast,var_other) on <var_ast:nullable AModule(AModule)> */
1587 var14 = var_ast == var_other;
1588 var12 = var14;
1589 goto RET_LABEL13;
1590 RET_LABEL13:(void)0;
1591 }
1592 }
1593 var10 = var12;
1594 goto RET_LABEL11;
1595 RET_LABEL11:(void)0;
1596 }
1597 var9 = var10;
1598 }
1599 if (var9){
1600 var = ((val*)NULL);
1601 goto RET_LABEL;
1602 } else {
1603 }
1604 var = var_mmodule;
1605 goto RET_LABEL;
1606 RET_LABEL:;
1607 return var;
1608 }
1609 /* method loader$ModelBuilder$search_module_in_paths for (self: ModelBuilder, nullable Location, String, Collection[String]): nullable MModule */
1610 val* nitc__loader___ModelBuilder___search_module_in_paths(val* self, val* p0, val* p1, val* p2) {
1611 val* var /* : nullable MModule */;
1612 val* var_location /* var location: nullable Location */;
1613 val* var_name /* var name: String */;
1614 val* var_lookpaths /* var lookpaths: Collection[String] */;
1615 val* var1 /* : ArraySet[MModule] */;
1616 val* var_res /* var res: ArraySet[MModule] */;
1617 val* var_ /* var : Collection[String] */;
1618 val* var2 /* : Iterator[nullable Object] */;
1619 val* var_3 /* var : Iterator[String] */;
1620 short int var4 /* : Bool */;
1621 val* var5 /* : nullable Object */;
1622 val* var_dirname /* var dirname: String */;
1623 val* var6 /* : NativeArray[String] */;
1624 static val* varonce;
1625 static val* varonce7;
1626 val* var8 /* : String */;
1627 char* var9 /* : CString */;
1628 val* var10 /* : String */;
1629 val* var11 /* : nullable Int */;
1630 val* var12 /* : nullable Int */;
1631 val* var13 /* : nullable Bool */;
1632 val* var14 /* : nullable Bool */;
1633 val* var15 /* : String */;
1634 val* var16 /* : String */;
1635 val* var17 /* : String */;
1636 val* var18 /* : nullable MModule */;
1637 val* var_mp /* var mp: nullable MModule */;
1638 short int var19 /* : Bool */;
1639 short int var20 /* : Bool */;
1640 val* var_other /* var other: nullable Object */;
1641 short int var22 /* : Bool */;
1642 short int var23 /* : Bool */;
1643 val* var24 /* : String */;
1644 val* var25 /* : String */;
1645 val* var26 /* : nullable MGroup */;
1646 val* var_g /* var g: nullable MGroup */;
1647 short int var27 /* : Bool */;
1648 short int var28 /* : Bool */;
1649 short int var30 /* : Bool */;
1650 short int var31 /* : Bool */;
1651 val* var32 /* : Array[MModule] */;
1652 short int var33 /* : Bool */;
1653 long var34 /* : Int */;
1654 short int var35 /* : Bool */;
1655 short int var37 /* : Bool */;
1656 int cltype;
1657 int idtype;
1658 const char* var_class_name;
1659 short int var38 /* : Bool */;
1660 val* var39 /* : ToolContext */;
1661 val* var41 /* : ToolContext */;
1662 val* var43 /* : NativeArray[String] */;
1663 static val* varonce42;
1664 static val* varonce44;
1665 val* var45 /* : String */;
1666 char* var46 /* : CString */;
1667 val* var47 /* : String */;
1668 val* var48 /* : nullable Int */;
1669 val* var49 /* : nullable Int */;
1670 val* var50 /* : nullable Bool */;
1671 val* var51 /* : nullable Bool */;
1672 static val* varonce52;
1673 val* var53 /* : String */;
1674 char* var54 /* : CString */;
1675 val* var55 /* : String */;
1676 val* var56 /* : nullable Int */;
1677 val* var57 /* : nullable Int */;
1678 val* var58 /* : nullable Bool */;
1679 val* var59 /* : nullable Bool */;
1680 static val* varonce60;
1681 val* var61 /* : String */;
1682 char* var62 /* : CString */;
1683 val* var63 /* : String */;
1684 val* var64 /* : nullable Int */;
1685 val* var65 /* : nullable Int */;
1686 val* var66 /* : nullable Bool */;
1687 val* var67 /* : nullable Bool */;
1688 val* var68 /* : Array[String] */;
1689 val* var_69 /* var : Array[String] */;
1690 val* var_70 /* var : ArraySet[MModule] */;
1691 val* var71 /* : Iterator[nullable Object] */;
1692 val* var_72 /* var : Iterator[MModule] */;
1693 short int var73 /* : Bool */;
1694 val* var75 /* : nullable Object */;
1695 val* var_x /* var x: MModule */;
1696 val* var76 /* : String */;
1697 val* var77 /* : nullable String */;
1698 val* var78 /* : String */;
1699 static val* varonce79;
1700 val* var80 /* : String */;
1701 char* var81 /* : CString */;
1702 val* var82 /* : String */;
1703 val* var83 /* : nullable Int */;
1704 val* var84 /* : nullable Int */;
1705 val* var85 /* : nullable Bool */;
1706 val* var86 /* : nullable Bool */;
1707 val* var87 /* : String */;
1708 val* var88 /* : String */;
1709 val* var89 /* : Message */;
1710 val* var90 /* : nullable Object */;
1711 var_location = p0;
1712 var_name = p1;
1713 var_lookpaths = p2;
1714 var1 = NEW_core__ArraySet(&type_core__ArraySet__nitc__MModule);
1715 {
1716 core___core__ArraySet___core__kernel__Object__init(var1); /* Direct call array$ArraySet$init on <var1:ArraySet[MModule]>*/
1717 }
1718 var_res = var1;
1719 var_ = var_lookpaths;
1720 {
1721 var2 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[String]>*/
1722 }
1723 var_3 = var2;
1724 for(;;) {
1725 {
1726 var4 = ((short int(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_3); /* is_ok on <var_3:Iterator[String]>*/
1727 }
1728 if (var4){
1729 } else {
1730 goto BREAK_label;
1731 }
1732 {
1733 var5 = ((val*(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_3); /* item on <var_3:Iterator[String]>*/
1734 }
1735 var_dirname = var5;
1736 if (unlikely(varonce==NULL)) {
1737 var6 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
1738 if (likely(varonce7!=NULL)) {
1739 var8 = varonce7;
1740 } else {
1741 var9 = ".nit";
1742 var11 = (val*)(4l<<2|1);
1743 var12 = (val*)(4l<<2|1);
1744 var13 = (val*)((long)(0)<<2|3);
1745 var14 = (val*)((long)(0)<<2|3);
1746 var10 = core__flat___CString___to_s_unsafe(var9, var11, var12, var13, var14);
1747 var8 = var10;
1748 varonce7 = var8;
1749 }
1750 ((struct instance_core__NativeArray*)var6)->values[1]=var8;
1751 } else {
1752 var6 = varonce;
1753 varonce = NULL;
1754 }
1755 ((struct instance_core__NativeArray*)var6)->values[0]=var_name;
1756 {
1757 var15 = ((val*(*)(val* self))(var6->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var6); /* native_to_s on <var6:NativeArray[String]>*/
1758 }
1759 varonce = var6;
1760 {
1761 var16 = core__file___String____47d(var_dirname, var15);
1762 }
1763 {
1764 var17 = core__file___String___simplify_path(var16);
1765 }
1766 {
1767 var18 = nitc__loader___ModelBuilder___identify_module(self, var17);
1768 }
1769 var_mp = var18;
1770 if (var_mp == NULL) {
1771 var19 = 0; /* is null */
1772 } else {
1773 var19 = 1; /* arg is null and recv is not */
1774 }
1775 if (0) {
1776 { /* Inline kernel$Object$!= (var_mp,((val*)NULL)) on <var_mp:nullable MModule> */
1777 var_other = ((val*)NULL);
1778 {
1779 var22 = ((short int(*)(val* self, val* p0))(var_mp->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mp, var_other); /* == on <var_mp:nullable MModule(MModule)>*/
1780 }
1781 var23 = !var22;
1782 var20 = var23;
1783 goto RET_LABEL21;
1784 RET_LABEL21:(void)0;
1785 }
1786 var19 = var20;
1787 }
1788 if (var19){
1789 {
1790 core___core__ArraySet___core__abstract_collection__SimpleCollection__add(var_res, var_mp); /* Direct call array$ArraySet$add on <var_res:ArraySet[MModule]>*/
1791 }
1792 } else {
1793 }
1794 {
1795 var24 = core__file___String____47d(var_dirname, var_name);
1796 }
1797 {
1798 var25 = core__file___String___simplify_path(var24);
1799 }
1800 {
1801 var26 = nitc__loader___ModelBuilder___identify_group(self, var25);
1802 }
1803 var_g = var26;
1804 if (var_g == NULL) {
1805 var27 = 0; /* is null */
1806 } else {
1807 var27 = 1; /* arg is null and recv is not */
1808 }
1809 if (0) {
1810 { /* Inline kernel$Object$!= (var_g,((val*)NULL)) on <var_g:nullable MGroup> */
1811 var_other = ((val*)NULL);
1812 {
1813 var30 = ((short int(*)(val* self, val* p0))(var_g->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_g, var_other); /* == on <var_g:nullable MGroup(MGroup)>*/
1814 }
1815 var31 = !var30;
1816 var28 = var31;
1817 goto RET_LABEL29;
1818 RET_LABEL29:(void)0;
1819 }
1820 var27 = var28;
1821 }
1822 if (var27){
1823 {
1824 nitc__loader___ModelBuilder___scan_group(self, var_g); /* Direct call loader$ModelBuilder$scan_group on <self:ModelBuilder>*/
1825 }
1826 {
1827 var32 = nitc__loader___MGroup___mmodules_by_name(var_g, var_name);
1828 }
1829 {
1830 core___core__SimpleCollection___add_all(var_res, var32); /* Direct call abstract_collection$SimpleCollection$add_all on <var_res:ArraySet[MModule]>*/
1831 }
1832 } else {
1833 }
1834 {
1835 ((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_3); /* next on <var_3:Iterator[String]>*/
1836 }
1837 }
1838 BREAK_label: (void)0;
1839 {
1840 ((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_3); /* finish on <var_3:Iterator[String]>*/
1841 }
1842 {
1843 var33 = core___core__ArraySet___core__abstract_collection__Collection__is_empty(var_res);
1844 }
1845 if (var33){
1846 var = ((val*)NULL);
1847 goto RET_LABEL;
1848 } else {
1849 }
1850 {
1851 var34 = core___core__ArraySet___core__abstract_collection__Collection__length(var_res);
1852 }
1853 {
1854 { /* Inline kernel$Int$> (var34,1l) on <var34:Int> */
1855 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1856 /* <1l:Int> isa OTHER */
1857 var37 = 1; /* easy <1l:Int> isa OTHER*/
1858 if (unlikely(!var37)) {
1859 var_class_name = type_core__Int.name;
1860 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1861 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
1862 fatal_exit(1);
1863 }
1864 var38 = var34 > 1l;
1865 var35 = var38;
1866 goto RET_LABEL36;
1867 RET_LABEL36:(void)0;
1868 }
1869 }
1870 if (var35){
1871 {
1872 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
1873 var41 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
1874 if (unlikely(var41 == NULL)) {
1875 if(catchStack.cursor >= 0){
1876 longjmp(catchStack.envs[catchStack.cursor], 1);
1877 }
1878 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1879 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
1880 fatal_exit(1);
1881 }
1882 var39 = var41;
1883 RET_LABEL40:(void)0;
1884 }
1885 }
1886 if (unlikely(varonce42==NULL)) {
1887 var43 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
1888 if (likely(varonce44!=NULL)) {
1889 var45 = varonce44;
1890 } else {
1891 var46 = "Error: conflicting module files for `";
1892 var48 = (val*)(37l<<2|1);
1893 var49 = (val*)(37l<<2|1);
1894 var50 = (val*)((long)(0)<<2|3);
1895 var51 = (val*)((long)(0)<<2|3);
1896 var47 = core__flat___CString___to_s_unsafe(var46, var48, var49, var50, var51);
1897 var45 = var47;
1898 varonce44 = var45;
1899 }
1900 ((struct instance_core__NativeArray*)var43)->values[0]=var45;
1901 if (likely(varonce52!=NULL)) {
1902 var53 = varonce52;
1903 } else {
1904 var54 = "`: `";
1905 var56 = (val*)(4l<<2|1);
1906 var57 = (val*)(4l<<2|1);
1907 var58 = (val*)((long)(0)<<2|3);
1908 var59 = (val*)((long)(0)<<2|3);
1909 var55 = core__flat___CString___to_s_unsafe(var54, var56, var57, var58, var59);
1910 var53 = var55;
1911 varonce52 = var53;
1912 }
1913 ((struct instance_core__NativeArray*)var43)->values[2]=var53;
1914 if (likely(varonce60!=NULL)) {
1915 var61 = varonce60;
1916 } else {
1917 var62 = "`";
1918 var64 = (val*)(1l<<2|1);
1919 var65 = (val*)(1l<<2|1);
1920 var66 = (val*)((long)(0)<<2|3);
1921 var67 = (val*)((long)(0)<<2|3);
1922 var63 = core__flat___CString___to_s_unsafe(var62, var64, var65, var66, var67);
1923 var61 = var63;
1924 varonce60 = var61;
1925 }
1926 ((struct instance_core__NativeArray*)var43)->values[4]=var61;
1927 } else {
1928 var43 = varonce42;
1929 varonce42 = NULL;
1930 }
1931 ((struct instance_core__NativeArray*)var43)->values[1]=var_name;
1932 var68 = NEW_core__Array(&type_core__Array__core__String);
1933 {
1934 core___core__Array___with_capacity(var68, 1l); /* Direct call array$Array$with_capacity on <var68:Array[String]>*/
1935 }
1936 var_69 = var68;
1937 var_70 = var_res;
1938 {
1939 var71 = core___core__ArraySet___core__abstract_collection__Collection__iterator(var_70);
1940 }
1941 var_72 = var71;
1942 for(;;) {
1943 {
1944 var73 = ((short int(*)(val* self))((((long)var_72&3)?class_info[((long)var_72&3)]:var_72->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_72); /* is_ok on <var_72:Iterator[MModule]>*/
1945 }
1946 if (var73){
1947 } else {
1948 goto BREAK_label74;
1949 }
1950 {
1951 var75 = ((val*(*)(val* self))((((long)var_72&3)?class_info[((long)var_72&3)]:var_72->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_72); /* item on <var_72:Iterator[MModule]>*/
1952 }
1953 var_x = var75;
1954 {
1955 var77 = nitc___nitc__MModule___filepath(var_x);
1956 }
1957 if (var77!=NULL) {
1958 var76 = var77;
1959 } else {
1960 {
1961 var78 = nitc___nitc__MModule___nitc__model_base__MEntity__full_name(var_x);
1962 }
1963 var76 = var78;
1964 }
1965 {
1966 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_69, var76); /* Direct call array$AbstractArray$push on <var_69:Array[String]>*/
1967 }
1968 {
1969 ((void(*)(val* self))((((long)var_72&3)?class_info[((long)var_72&3)]:var_72->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_72); /* next on <var_72:Iterator[MModule]>*/
1970 }
1971 }
1972 BREAK_label74: (void)0;
1973 {
1974 ((void(*)(val* self))((((long)var_72&3)?class_info[((long)var_72&3)]:var_72->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_72); /* finish on <var_72:Iterator[MModule]>*/
1975 }
1976 if (likely(varonce79!=NULL)) {
1977 var80 = varonce79;
1978 } else {
1979 var81 = "`, `";
1980 var83 = (val*)(4l<<2|1);
1981 var84 = (val*)(4l<<2|1);
1982 var85 = (val*)((long)(0)<<2|3);
1983 var86 = (val*)((long)(0)<<2|3);
1984 var82 = core__flat___CString___to_s_unsafe(var81, var83, var84, var85, var86);
1985 var80 = var82;
1986 varonce79 = var80;
1987 }
1988 {
1989 var87 = core__abstract_text___Collection___join(var_69, var80, ((val*)NULL));
1990 }
1991 ((struct instance_core__NativeArray*)var43)->values[3]=var87;
1992 {
1993 var88 = ((val*(*)(val* self))(var43->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var43); /* native_to_s on <var43:NativeArray[String]>*/
1994 }
1995 varonce42 = var43;
1996 {
1997 var89 = nitc___nitc__ToolContext___error(var39, var_location, var88);
1998 }
1999 } else {
2000 }
2001 {
2002 var90 = core___core__ArraySet___core__abstract_collection__Collection__first(var_res);
2003 }
2004 var = var90;
2005 goto RET_LABEL;
2006 RET_LABEL:;
2007 return var;
2008 }
2009 /* method loader$ModelBuilder$search_group_in_paths for (self: ModelBuilder, String, Collection[String]): ArraySet[MGroup] */
2010 val* nitc__loader___ModelBuilder___search_group_in_paths(val* self, val* p0, val* p1) {
2011 val* var /* : ArraySet[MGroup] */;
2012 val* var_name /* var name: String */;
2013 val* var_lookpaths /* var lookpaths: Collection[String] */;
2014 val* var1 /* : ArraySet[MGroup] */;
2015 val* var_res /* var res: ArraySet[MGroup] */;
2016 val* var_ /* var : Collection[String] */;
2017 val* var2 /* : Iterator[nullable Object] */;
2018 val* var_3 /* var : Iterator[String] */;
2019 short int var4 /* : Bool */;
2020 val* var5 /* : nullable Object */;
2021 val* var_dirname /* var dirname: String */;
2022 val* var6 /* : String */;
2023 val* var7 /* : nullable MGroup */;
2024 val* var_mg /* var mg: nullable MGroup */;
2025 short int var8 /* : Bool */;
2026 short int var9 /* : Bool */;
2027 val* var_other /* var other: nullable Object */;
2028 short int var11 /* : Bool */;
2029 short int var12 /* : Bool */;
2030 var_name = p0;
2031 var_lookpaths = p1;
2032 var1 = NEW_core__ArraySet(&type_core__ArraySet__nitc__MGroup);
2033 {
2034 core___core__ArraySet___core__kernel__Object__init(var1); /* Direct call array$ArraySet$init on <var1:ArraySet[MGroup]>*/
2035 }
2036 var_res = var1;
2037 var_ = var_lookpaths;
2038 {
2039 var2 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[String]>*/
2040 }
2041 var_3 = var2;
2042 for(;;) {
2043 {
2044 var4 = ((short int(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_3); /* is_ok on <var_3:Iterator[String]>*/
2045 }
2046 if (var4){
2047 } else {
2048 goto BREAK_label;
2049 }
2050 {
2051 var5 = ((val*(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_3); /* item on <var_3:Iterator[String]>*/
2052 }
2053 var_dirname = var5;
2054 {
2055 var6 = core__file___String____47d(var_dirname, var_name);
2056 }
2057 {
2058 var7 = nitc__loader___ModelBuilder___identify_group(self, var6);
2059 }
2060 var_mg = var7;
2061 if (var_mg == NULL) {
2062 var8 = 0; /* is null */
2063 } else {
2064 var8 = 1; /* arg is null and recv is not */
2065 }
2066 if (0) {
2067 { /* Inline kernel$Object$!= (var_mg,((val*)NULL)) on <var_mg:nullable MGroup> */
2068 var_other = ((val*)NULL);
2069 {
2070 var11 = ((short int(*)(val* self, val* p0))(var_mg->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mg, var_other); /* == on <var_mg:nullable MGroup(MGroup)>*/
2071 }
2072 var12 = !var11;
2073 var9 = var12;
2074 goto RET_LABEL10;
2075 RET_LABEL10:(void)0;
2076 }
2077 var8 = var9;
2078 }
2079 if (var8){
2080 {
2081 core___core__ArraySet___core__abstract_collection__SimpleCollection__add(var_res, var_mg); /* Direct call array$ArraySet$add on <var_res:ArraySet[MGroup]>*/
2082 }
2083 } else {
2084 }
2085 {
2086 ((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_3); /* next on <var_3:Iterator[String]>*/
2087 }
2088 }
2089 BREAK_label: (void)0;
2090 {
2091 ((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_3); /* finish on <var_3:Iterator[String]>*/
2092 }
2093 var = var_res;
2094 goto RET_LABEL;
2095 RET_LABEL:;
2096 return var;
2097 }
2098 /* method loader$ModelBuilder$identified_modules_by_path for (self: ModelBuilder): HashMap[String, nullable MModule] */
2099 val* nitc__loader___ModelBuilder___identified_modules_by_path(val* self) {
2100 val* var /* : HashMap[String, nullable MModule] */;
2101 val* var1 /* : HashMap[String, nullable MModule] */;
2102 var1 = self->attrs[COLOR_nitc__loader__ModelBuilder___identified_modules_by_path].val; /* _identified_modules_by_path on <self:ModelBuilder> */
2103 if (unlikely(var1 == NULL)) {
2104 if(catchStack.cursor >= 0){
2105 longjmp(catchStack.envs[catchStack.cursor], 1);
2106 }
2107 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_modules_by_path");
2108 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 316);
2109 fatal_exit(1);
2110 }
2111 var = var1;
2112 RET_LABEL:;
2113 return var;
2114 }
2115 /* method loader$ModelBuilder$identified_modules for (self: ModelBuilder): Array[MModule] */
2116 val* nitc__loader___ModelBuilder___identified_modules(val* self) {
2117 val* var /* : Array[MModule] */;
2118 val* var1 /* : Array[MModule] */;
2119 var1 = self->attrs[COLOR_nitc__loader__ModelBuilder___identified_modules].val; /* _identified_modules on <self:ModelBuilder> */
2120 if (unlikely(var1 == NULL)) {
2121 if(catchStack.cursor >= 0){
2122 longjmp(catchStack.envs[catchStack.cursor], 1);
2123 }
2124 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_modules");
2125 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 319);
2126 fatal_exit(1);
2127 }
2128 var = var1;
2129 RET_LABEL:;
2130 return var;
2131 }
2132 /* method loader$ModelBuilder$parsed_modules for (self: ModelBuilder): Array[MModule] */
2133 val* nitc__loader___ModelBuilder___parsed_modules(val* self) {
2134 val* var /* : Array[MModule] */;
2135 val* var1 /* : Array[MModule] */;
2136 var1 = self->attrs[COLOR_nitc__loader__ModelBuilder___parsed_modules].val; /* _parsed_modules on <self:ModelBuilder> */
2137 if (unlikely(var1 == NULL)) {
2138 if(catchStack.cursor >= 0){
2139 longjmp(catchStack.envs[catchStack.cursor], 1);
2140 }
2141 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _parsed_modules");
2142 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 325);
2143 fatal_exit(1);
2144 }
2145 var = var1;
2146 RET_LABEL:;
2147 return var;
2148 }
2149 /* method loader$ModelBuilder$last_loader_error for (self: ModelBuilder): nullable String */
2150 val* nitc__loader___ModelBuilder___last_loader_error(val* self) {
2151 val* var /* : nullable String */;
2152 val* var1 /* : nullable String */;
2153 var1 = self->attrs[COLOR_nitc__loader__ModelBuilder___last_loader_error].val; /* _last_loader_error on <self:ModelBuilder> */
2154 var = var1;
2155 RET_LABEL:;
2156 return var;
2157 }
2158 /* method loader$ModelBuilder$last_loader_error= for (self: ModelBuilder, nullable String) */
2159 void nitc__loader___ModelBuilder___last_loader_error_61d(val* self, val* p0) {
2160 self->attrs[COLOR_nitc__loader__ModelBuilder___last_loader_error].val = p0; /* _last_loader_error on <self:ModelBuilder> */
2161 RET_LABEL:;
2162 }
2163 /* method loader$ModelBuilder$identify_module for (self: ModelBuilder, String): nullable MModule */
2164 val* nitc__loader___ModelBuilder___identify_module(val* self, val* p0) {
2165 val* var /* : nullable MModule */;
2166 val* var_path /* var path: String */;
2167 static val* varonce;
2168 val* var2 /* : String */;
2169 char* var3 /* : CString */;
2170 val* var4 /* : String */;
2171 val* var5 /* : nullable Int */;
2172 val* var6 /* : nullable Int */;
2173 val* var7 /* : nullable Bool */;
2174 val* var8 /* : nullable Bool */;
2175 short int var9 /* : Bool */;
2176 short int var10 /* : Bool */;
2177 val* var11 /* : SequenceRead[Char] */;
2178 val* var12 /* : nullable Object */;
2179 short int var13 /* : Bool */;
2180 short int var14 /* : Bool */;
2181 val* var15 /* : Array[String] */;
2182 val* var17 /* : Array[String] */;
2183 val* var18 /* : nullable MModule */;
2184 val* var_res /* var res: nullable MModule */;
2185 short int var19 /* : Bool */;
2186 short int var20 /* : Bool */;
2187 val* var_other /* var other: nullable Object */;
2188 short int var22 /* : Bool */;
2189 short int var23 /* : Bool */;
2190 short int var24 /* : Bool */;
2191 val* var25 /* : nullable MGroup */;
2192 val* var_mgroup /* var mgroup: nullable MGroup */;
2193 short int var26 /* : Bool */;
2194 short int var27 /* : Bool */;
2195 short int var29 /* : Bool */;
2196 short int var30 /* : Bool */;
2197 val* var31 /* : nullable String */;
2198 val* var32 /* : String */;
2199 val* var34 /* : String */;
2200 static val* varonce35;
2201 val* var36 /* : String */;
2202 char* var37 /* : CString */;
2203 val* var38 /* : String */;
2204 val* var39 /* : nullable Int */;
2205 val* var40 /* : nullable Int */;
2206 val* var41 /* : nullable Bool */;
2207 val* var42 /* : nullable Bool */;
2208 val* var43 /* : Text */;
2209 val* var44 /* : String */;
2210 val* var_owner_path /* var owner_path: String */;
2211 short int var45 /* : Bool */;
2212 val* var46 /* : SequenceRead[Char] */;
2213 val* var47 /* : nullable Object */;
2214 short int var48 /* : Bool */;
2215 static val* varonce49;
2216 val* var50 /* : String */;
2217 char* var51 /* : CString */;
2218 val* var52 /* : String */;
2219 val* var53 /* : nullable Int */;
2220 val* var54 /* : nullable Int */;
2221 val* var55 /* : nullable Bool */;
2222 val* var56 /* : nullable Bool */;
2223 val* var57 /* : Array[String] */;
2224 val* var_ids /* var ids: Array[String] */;
2225 val* var58 /* : nullable Object */;
2226 val* var59 /* : nullable MGroup */;
2227 val* var_g /* var g: nullable MGroup */;
2228 short int var60 /* : Bool */;
2229 short int var61 /* : Bool */;
2230 short int var63 /* : Bool */;
2231 short int var64 /* : Bool */;
2232 val* var65 /* : nullable Object */;
2233 val* var66 /* : Array[MModule] */;
2234 val* var_ms /* var ms: Array[MModule] */;
2235 val* var_ /* var : Array[MModule] */;
2236 val* var67 /* : IndexedIterator[nullable Object] */;
2237 val* var_68 /* var : IndexedIterator[MModule] */;
2238 short int var69 /* : Bool */;
2239 val* var71 /* : nullable Object */;
2240 val* var_m /* var m: MModule */;
2241 val* var72 /* : String */;
2242 short int var73 /* : Bool */;
2243 long var74 /* : Int */;
2244 long var76 /* : Int */;
2245 short int var77 /* : Bool */;
2246 short int var79 /* : Bool */;
2247 int cltype;
2248 int idtype;
2249 const char* var_class_name;
2250 short int var80 /* : Bool */;
2251 long var81 /* : Int */;
2252 long var83 /* : Int */;
2253 short int var84 /* : Bool */;
2254 short int var86 /* : Bool */;
2255 val* var87 /* : nullable Object */;
2256 long var88 /* : Int */;
2257 long var90 /* : Int */;
2258 short int var91 /* : Bool */;
2259 short int var93 /* : Bool */;
2260 int cltype94;
2261 int idtype95;
2262 const char* var_class_name96;
2263 short int var97 /* : Bool */;
2264 val* var98 /* : Array[String] */;
2265 val* var_l /* var l: Array[String] */;
2266 val* var_99 /* var : Array[MModule] */;
2267 val* var100 /* : IndexedIterator[nullable Object] */;
2268 val* var_101 /* var : IndexedIterator[MModule] */;
2269 short int var102 /* : Bool */;
2270 val* var104 /* : nullable Object */;
2271 val* var_m105 /* var m: MModule */;
2272 val* var106 /* : nullable String */;
2273 val* var_fp /* var fp: nullable String */;
2274 short int var107 /* : Bool */;
2275 short int var108 /* : Bool */;
2276 short int var110 /* : Bool */;
2277 short int var111 /* : Bool */;
2278 val* var113 /* : NativeArray[String] */;
2279 static val* varonce112;
2280 static val* varonce114;
2281 val* var115 /* : String */;
2282 char* var116 /* : CString */;
2283 val* var117 /* : String */;
2284 val* var118 /* : nullable Int */;
2285 val* var119 /* : nullable Int */;
2286 val* var120 /* : nullable Bool */;
2287 val* var121 /* : nullable Bool */;
2288 static val* varonce122;
2289 val* var123 /* : String */;
2290 char* var124 /* : CString */;
2291 val* var125 /* : String */;
2292 val* var126 /* : nullable Int */;
2293 val* var127 /* : nullable Int */;
2294 val* var128 /* : nullable Bool */;
2295 val* var129 /* : nullable Bool */;
2296 val* var130 /* : String */;
2297 static val* varonce131;
2298 val* var132 /* : String */;
2299 char* var133 /* : CString */;
2300 val* var134 /* : String */;
2301 val* var135 /* : nullable Int */;
2302 val* var136 /* : nullable Int */;
2303 val* var137 /* : nullable Bool */;
2304 val* var138 /* : nullable Bool */;
2305 val* var140 /* : NativeArray[String] */;
2306 static val* varonce139;
2307 static val* varonce141;
2308 val* var142 /* : String */;
2309 char* var143 /* : CString */;
2310 val* var144 /* : String */;
2311 val* var145 /* : nullable Int */;
2312 val* var146 /* : nullable Int */;
2313 val* var147 /* : nullable Bool */;
2314 val* var148 /* : nullable Bool */;
2315 static val* varonce149;
2316 val* var150 /* : String */;
2317 char* var151 /* : CString */;
2318 val* var152 /* : String */;
2319 val* var153 /* : nullable Int */;
2320 val* var154 /* : nullable Int */;
2321 val* var155 /* : nullable Bool */;
2322 val* var156 /* : nullable Bool */;
2323 val* var157 /* : String */;
2324 val* var158 /* : String */;
2325 val* var160 /* : NativeArray[String] */;
2326 static val* varonce159;
2327 static val* varonce161;
2328 val* var162 /* : String */;
2329 char* var163 /* : CString */;
2330 val* var164 /* : String */;
2331 val* var165 /* : nullable Int */;
2332 val* var166 /* : nullable Int */;
2333 val* var167 /* : nullable Bool */;
2334 val* var168 /* : nullable Bool */;
2335 static val* varonce169;
2336 val* var170 /* : String */;
2337 char* var171 /* : CString */;
2338 val* var172 /* : String */;
2339 val* var173 /* : nullable Int */;
2340 val* var174 /* : nullable Int */;
2341 val* var175 /* : nullable Bool */;
2342 val* var176 /* : nullable Bool */;
2343 static val* varonce177;
2344 val* var178 /* : String */;
2345 char* var179 /* : CString */;
2346 val* var180 /* : String */;
2347 val* var181 /* : nullable Int */;
2348 val* var182 /* : nullable Int */;
2349 val* var183 /* : nullable Bool */;
2350 val* var184 /* : nullable Bool */;
2351 static val* varonce185;
2352 val* var186 /* : String */;
2353 char* var187 /* : CString */;
2354 val* var188 /* : String */;
2355 val* var189 /* : nullable Int */;
2356 val* var190 /* : nullable Int */;
2357 val* var191 /* : nullable Bool */;
2358 val* var192 /* : nullable Bool */;
2359 val* var193 /* : String */;
2360 val* var194 /* : String */;
2361 val* var196 /* : BestDistance[String] */;
2362 long var197 /* : Int */;
2363 long var198 /* : Int */;
2364 short int var200 /* : Bool */;
2365 int cltype201;
2366 int idtype202;
2367 const char* var_class_name203;
2368 long var204 /* : Int */;
2369 val* var_bests /* var bests: BestDistance[String] */;
2370 val* var205 /* : MPackage */;
2371 val* var207 /* : MPackage */;
2372 val* var208 /* : POSet[MGroup] */;
2373 val* var210 /* : POSet[MGroup] */;
2374 val* var_211 /* var : POSet[MGroup] */;
2375 val* var212 /* : Iterator[nullable Object] */;
2376 val* var_213 /* var : Iterator[MGroup] */;
2377 short int var214 /* : Bool */;
2378 val* var216 /* : nullable Object */;
2379 val* var_sg /* var sg: MGroup */;
2380 val* var217 /* : Array[MModule] */;
2381 val* var219 /* : Array[MModule] */;
2382 val* var_220 /* var : Array[MModule] */;
2383 val* var221 /* : IndexedIterator[nullable Object] */;
2384 val* var_222 /* var : IndexedIterator[MModule] */;
2385 short int var223 /* : Bool */;
2386 val* var225 /* : nullable Object */;
2387 val* var_m226 /* var m: MModule */;
2388 val* var227 /* : String */;
2389 long var228 /* : Int */;
2390 long var_d /* var d: Int */;
2391 val* var229 /* : String */;
2392 short int var230 /* : Bool */;
2393 val* var232 /* : NativeArray[String] */;
2394 static val* varonce231;
2395 static val* varonce233;
2396 val* var234 /* : String */;
2397 char* var235 /* : CString */;
2398 val* var236 /* : String */;
2399 val* var237 /* : nullable Int */;
2400 val* var238 /* : nullable Int */;
2401 val* var239 /* : nullable Bool */;
2402 val* var240 /* : nullable Bool */;
2403 static val* varonce241;
2404 val* var242 /* : String */;
2405 char* var243 /* : CString */;
2406 val* var244 /* : String */;
2407 val* var245 /* : nullable Int */;
2408 val* var246 /* : nullable Int */;
2409 val* var247 /* : nullable Bool */;
2410 val* var248 /* : nullable Bool */;
2411 val* var249 /* : String */;
2412 val* var_last_loader_error /* var last_loader_error: String */;
2413 val* var250 /* : Set[nullable Object] */;
2414 val* var252 /* : Set[nullable Object] */;
2415 short int var253 /* : Bool */;
2416 static val* varonce254;
2417 val* var255 /* : String */;
2418 char* var256 /* : CString */;
2419 val* var257 /* : String */;
2420 val* var258 /* : nullable Int */;
2421 val* var259 /* : nullable Int */;
2422 val* var260 /* : nullable Bool */;
2423 val* var261 /* : nullable Bool */;
2424 val* var262 /* : Set[nullable Object] */;
2425 val* var264 /* : Set[nullable Object] */;
2426 static val* varonce265;
2427 val* var266 /* : String */;
2428 char* var267 /* : CString */;
2429 val* var268 /* : String */;
2430 val* var269 /* : nullable Int */;
2431 val* var270 /* : nullable Int */;
2432 val* var271 /* : nullable Bool */;
2433 val* var272 /* : nullable Bool */;
2434 static val* varonce273;
2435 val* var274 /* : String */;
2436 char* var275 /* : CString */;
2437 val* var276 /* : String */;
2438 val* var277 /* : nullable Int */;
2439 val* var278 /* : nullable Int */;
2440 val* var279 /* : nullable Bool */;
2441 val* var280 /* : nullable Bool */;
2442 val* var281 /* : String */;
2443 val* var282 /* : Text */;
2444 static val* varonce283;
2445 val* var284 /* : String */;
2446 char* var285 /* : CString */;
2447 val* var286 /* : String */;
2448 val* var287 /* : nullable Int */;
2449 val* var288 /* : nullable Int */;
2450 val* var289 /* : nullable Bool */;
2451 val* var290 /* : nullable Bool */;
2452 val* var291 /* : Text */;
2453 val* var292 /* : Text */;
2454 short int var294 /* : Bool */;
2455 short int var295 /* : Bool */;
2456 val* var296 /* : HashMap[String, nullable MModule] */;
2457 val* var298 /* : HashMap[String, nullable MModule] */;
2458 short int var299 /* : Bool */;
2459 val* var300 /* : HashMap[String, nullable MModule] */;
2460 val* var302 /* : HashMap[String, nullable MModule] */;
2461 val* var303 /* : nullable Object */;
2462 val* var304 /* : String */;
2463 val* var_rp /* var rp: String */;
2464 val* var305 /* : HashMap[String, nullable MModule] */;
2465 val* var307 /* : HashMap[String, nullable MModule] */;
2466 short int var308 /* : Bool */;
2467 val* var309 /* : HashMap[String, nullable MModule] */;
2468 val* var311 /* : HashMap[String, nullable MModule] */;
2469 val* var312 /* : nullable Object */;
2470 static val* varonce313;
2471 val* var314 /* : String */;
2472 char* var315 /* : CString */;
2473 val* var316 /* : String */;
2474 val* var317 /* : nullable Int */;
2475 val* var318 /* : nullable Int */;
2476 val* var319 /* : nullable Bool */;
2477 val* var320 /* : nullable Bool */;
2478 val* var321 /* : String */;
2479 val* var_pn /* var pn: String */;
2480 static val* varonce322;
2481 val* var323 /* : String */;
2482 char* var324 /* : CString */;
2483 val* var325 /* : String */;
2484 val* var326 /* : nullable Int */;
2485 val* var327 /* : nullable Int */;
2486 val* var328 /* : nullable Bool */;
2487 val* var329 /* : nullable Bool */;
2488 val* var330 /* : String */;
2489 val* var331 /* : String */;
2490 val* var_mgrouppath /* var mgrouppath: String */;
2491 val* var332 /* : nullable MGroup */;
2492 val* var_mgroup333 /* var mgroup: nullable MGroup */;
2493 short int var334 /* : Bool */;
2494 short int var335 /* : Bool */;
2495 short int var337 /* : Bool */;
2496 short int var338 /* : Bool */;
2497 val* var339 /* : MPackage */;
2498 val* var341 /* : MPackage */;
2499 val* var_mpackage /* var mpackage: MPackage */;
2500 short int var342 /* : Bool */;
2501 short int var343 /* : Bool */;
2502 val* var344 /* : ToolContext */;
2503 val* var346 /* : ToolContext */;
2504 val* var348 /* : NativeArray[String] */;
2505 static val* varonce347;
2506 static val* varonce349;
2507 val* var350 /* : String */;
2508 char* var351 /* : CString */;
2509 val* var352 /* : String */;
2510 val* var353 /* : nullable Int */;
2511 val* var354 /* : nullable Int */;
2512 val* var355 /* : nullable Bool */;
2513 val* var356 /* : nullable Bool */;
2514 static val* varonce357;
2515 val* var358 /* : String */;
2516 char* var359 /* : CString */;
2517 val* var360 /* : String */;
2518 val* var361 /* : nullable Int */;
2519 val* var362 /* : nullable Int */;
2520 val* var363 /* : nullable Bool */;
2521 val* var364 /* : nullable Bool */;
2522 static val* varonce365;
2523 val* var366 /* : String */;
2524 char* var367 /* : CString */;
2525 val* var368 /* : String */;
2526 val* var369 /* : nullable Int */;
2527 val* var370 /* : nullable Int */;
2528 val* var371 /* : nullable Bool */;
2529 val* var372 /* : nullable Bool */;
2530 val* var373 /* : String */;
2531 val* var374 /* : String */;
2532 short int var375 /* : Bool */;
2533 short int var376 /* : Bool */;
2534 val* var_other378 /* var other: nullable Object */;
2535 short int var379 /* : Bool */;
2536 short int var381 /* : Bool */;
2537 val* var382 /* : Location */;
2538 val* var_loc /* var loc: Location */;
2539 val* var383 /* : MPackage */;
2540 val* var384 /* : Model */;
2541 val* var386 /* : Model */;
2542 val* var_mpackage387 /* var mpackage: MPackage */;
2543 val* var388 /* : MGroup */;
2544 val* var390 /* : ToolContext */;
2545 val* var392 /* : ToolContext */;
2546 val* var394 /* : NativeArray[String] */;
2547 static val* varonce393;
2548 static val* varonce395;
2549 val* var396 /* : String */;
2550 char* var397 /* : CString */;
2551 val* var398 /* : String */;
2552 val* var399 /* : nullable Int */;
2553 val* var400 /* : nullable Int */;
2554 val* var401 /* : nullable Bool */;
2555 val* var402 /* : nullable Bool */;
2556 static val* varonce403;
2557 val* var404 /* : String */;
2558 char* var405 /* : CString */;
2559 val* var406 /* : String */;
2560 val* var407 /* : nullable Int */;
2561 val* var408 /* : nullable Int */;
2562 val* var409 /* : nullable Bool */;
2563 val* var410 /* : nullable Bool */;
2564 val* var411 /* : String */;
2565 val* var412 /* : String */;
2566 val* var414 /* : NativeArray[String] */;
2567 static val* varonce413;
2568 static val* varonce415;
2569 val* var416 /* : String */;
2570 char* var417 /* : CString */;
2571 val* var418 /* : String */;
2572 val* var419 /* : nullable Int */;
2573 val* var420 /* : nullable Int */;
2574 val* var421 /* : nullable Bool */;
2575 val* var422 /* : nullable Bool */;
2576 val* var423 /* : String */;
2577 val* var424 /* : String */;
2578 val* var_inipath /* var inipath: String */;
2579 short int var425 /* : Bool */;
2580 val* var426 /* : ConfigTree */;
2581 val* var_ini /* var ini: ConfigTree */;
2582 val* var428 /* : Location */;
2583 val* var_loc429 /* var loc: Location */;
2584 val* var430 /* : MModule */;
2585 val* var431 /* : Model */;
2586 val* var433 /* : Model */;
2587 val* var_res434 /* var res: MModule */;
2588 val* var435 /* : HashMap[String, nullable MModule] */;
2589 val* var437 /* : HashMap[String, nullable MModule] */;
2590 val* var438 /* : HashMap[String, nullable MModule] */;
2591 val* var440 /* : HashMap[String, nullable MModule] */;
2592 val* var441 /* : Array[MModule] */;
2593 val* var443 /* : Array[MModule] */;
2594 var_path = p0;
2595 {
2596 { /* Inline loader$ModelBuilder$last_loader_error= (self,((val*)NULL)) on <self:ModelBuilder> */
2597 self->attrs[COLOR_nitc__loader__ModelBuilder___last_loader_error].val = ((val*)NULL); /* _last_loader_error on <self:ModelBuilder> */
2598 RET_LABEL1:(void)0;
2599 }
2600 }
2601 if (likely(varonce!=NULL)) {
2602 var2 = varonce;
2603 } else {
2604 var3 = ".nit";
2605 var5 = (val*)(4l<<2|1);
2606 var6 = (val*)(4l<<2|1);
2607 var7 = (val*)((long)(0)<<2|3);
2608 var8 = (val*)((long)(0)<<2|3);
2609 var4 = core__flat___CString___to_s_unsafe(var3, var5, var6, var7, var8);
2610 var2 = var4;
2611 varonce = var2;
2612 }
2613 {
2614 var9 = core___core__Text___has_suffix(var_path, var2);
2615 }
2616 var10 = !var9;
2617 if (var10){
2618 {
2619 var11 = ((val*(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Text__chars]))(var_path); /* chars on <var_path:String>*/
2620 }
2621 {
2622 var12 = (val*)((long)('/')<<2|2);
2623 var13 = ((short int(*)(val* self, val* p0))((((long)var11&3)?class_info[((long)var11&3)]:var11->class)->vft[COLOR_core__abstract_collection__Collection__has]))(var11, var12); /* has on <var11:SequenceRead[Char]>*/
2624 }
2625 var14 = !var13;
2626 if (var14){
2627 {
2628 { /* Inline loader$ModelBuilder$paths (self) on <self:ModelBuilder> */
2629 var17 = self->attrs[COLOR_nitc__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
2630 if (unlikely(var17 == NULL)) {
2631 if(catchStack.cursor >= 0){
2632 longjmp(catchStack.envs[catchStack.cursor], 1);
2633 }
2634 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
2635 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 213);
2636 fatal_exit(1);
2637 }
2638 var15 = var17;
2639 RET_LABEL16:(void)0;
2640 }
2641 }
2642 {
2643 var18 = nitc__loader___ModelBuilder___search_module_in_paths(self, ((val*)NULL), var_path, var15);
2644 }
2645 var_res = var18;
2646 if (var_res == NULL) {
2647 var19 = 0; /* is null */
2648 } else {
2649 var19 = 1; /* arg is null and recv is not */
2650 }
2651 if (0) {
2652 { /* Inline kernel$Object$!= (var_res,((val*)NULL)) on <var_res:nullable MModule> */
2653 var_other = ((val*)NULL);
2654 {
2655 var22 = ((short int(*)(val* self, val* p0))(var_res->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_res, var_other); /* == on <var_res:nullable MModule(MModule)>*/
2656 }
2657 var23 = !var22;
2658 var20 = var23;
2659 goto RET_LABEL21;
2660 RET_LABEL21:(void)0;
2661 }
2662 var19 = var20;
2663 }
2664 if (var19){
2665 var = var_res;
2666 goto RET_LABEL;
2667 } else {
2668 }
2669 } else {
2670 }
2671 {
2672 var24 = core__file___Text___file_exists(var_path);
2673 }
2674 if (var24){
2675 {
2676 var25 = nitc__loader___ModelBuilder___identify_group(self, var_path);
2677 }
2678 var_mgroup = var25;
2679 if (var_mgroup == NULL) {
2680 var26 = 0; /* is null */
2681 } else {
2682 var26 = 1; /* arg is null and recv is not */
2683 }
2684 if (0) {
2685 { /* Inline kernel$Object$!= (var_mgroup,((val*)NULL)) on <var_mgroup:nullable MGroup> */
2686 var_other = ((val*)NULL);
2687 {
2688 var29 = ((short int(*)(val* self, val* p0))(var_mgroup->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mgroup, var_other); /* == on <var_mgroup:nullable MGroup(MGroup)>*/
2689 }
2690 var30 = !var29;
2691 var27 = var30;
2692 goto RET_LABEL28;
2693 RET_LABEL28:(void)0;
2694 }
2695 var26 = var27;
2696 }
2697 if (var26){
2698 {
2699 var31 = nitc___nitc__MGroup___filepath(var_mgroup);
2700 }
2701 {
2702 { /* Inline mpackage$MGroup$name (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
2703 var34 = var_mgroup->attrs[COLOR_nitc__mpackage__MGroup___name].val; /* _name on <var_mgroup:nullable MGroup(MGroup)> */
2704 if (unlikely(var34 == NULL)) {
2705 if(catchStack.cursor >= 0){
2706 longjmp(catchStack.envs[catchStack.cursor], 1);
2707 }
2708 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2709 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 70);
2710 fatal_exit(1);
2711 }
2712 var32 = var34;
2713 RET_LABEL33:(void)0;
2714 }
2715 }
2716 if (likely(varonce35!=NULL)) {
2717 var36 = varonce35;
2718 } else {
2719 var37 = ".nit";
2720 var39 = (val*)(4l<<2|1);
2721 var40 = (val*)(4l<<2|1);
2722 var41 = (val*)((long)(0)<<2|3);
2723 var42 = (val*)((long)(0)<<2|3);
2724 var38 = core__flat___CString___to_s_unsafe(var37, var39, var40, var41, var42);
2725 var36 = var38;
2726 varonce35 = var36;
2727 }
2728 {
2729 var43 = ((val*(*)(val* self, val* p0))(var32->class->vft[COLOR_core__abstract_text__Text___43d]))(var32, var36); /* + on <var32:String>*/
2730 }
2731 if (var31 == NULL) {
2732 if(catchStack.cursor >= 0){
2733 longjmp(catchStack.envs[catchStack.cursor], 1);
2734 }
2735 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2736 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 370);
2737 fatal_exit(1);
2738 } else {
2739 var44 = core__file___String___join_path(var31, var43);
2740 }
2741 var_owner_path = var44;
2742 {
2743 var45 = core__file___Text___file_exists(var_owner_path);
2744 }
2745 if (var45){
2746 var_path = var_owner_path;
2747 goto BREAK_label;
2748 } else {
2749 }
2750 } else {
2751 }
2752 } else {
2753 }
2754 {
2755 var46 = ((val*(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Text__chars]))(var_path); /* chars on <var_path:String>*/
2756 }
2757 {
2758 var47 = (val*)((long)(':')<<2|2);
2759 var48 = ((short int(*)(val* self, val* p0))((((long)var46&3)?class_info[((long)var46&3)]:var46->class)->vft[COLOR_core__abstract_collection__Collection__has]))(var46, var47); /* has on <var46:SequenceRead[Char]>*/
2760 }
2761 if (var48){
2762 if (likely(varonce49!=NULL)) {
2763 var50 = varonce49;
2764 } else {
2765 var51 = "::";
2766 var53 = (val*)(2l<<2|1);
2767 var54 = (val*)(2l<<2|1);
2768 var55 = (val*)((long)(0)<<2|3);
2769 var56 = (val*)((long)(0)<<2|3);
2770 var52 = core__flat___CString___to_s_unsafe(var51, var53, var54, var55, var56);
2771 var50 = var52;
2772 varonce49 = var50;
2773 }
2774 {
2775 var57 = core__string_search___Text___split(var_path, var50);
2776 }
2777 var_ids = var57;
2778 {
2779 var58 = core___core__SequenceRead___Collection__first(var_ids);
2780 }
2781 {
2782 var59 = nitc__loader___ModelBuilder___identify_group(self, var58);
2783 }
2784 var_g = var59;
2785 if (var_g == NULL) {
2786 var60 = 0; /* is null */
2787 } else {
2788 var60 = 1; /* arg is null and recv is not */
2789 }
2790 if (0) {
2791 { /* Inline kernel$Object$!= (var_g,((val*)NULL)) on <var_g:nullable MGroup> */
2792 var_other = ((val*)NULL);
2793 {
2794 var63 = ((short int(*)(val* self, val* p0))(var_g->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_g, var_other); /* == on <var_g:nullable MGroup(MGroup)>*/
2795 }
2796 var64 = !var63;
2797 var61 = var64;
2798 goto RET_LABEL62;
2799 RET_LABEL62:(void)0;
2800 }
2801 var60 = var61;
2802 }
2803 if (var60){
2804 {
2805 nitc__loader___ModelBuilder___scan_group(self, var_g); /* Direct call loader$ModelBuilder$scan_group on <self:ModelBuilder>*/
2806 }
2807 {
2808 var65 = core___core__SequenceRead___last(var_ids);
2809 }
2810 {
2811 var66 = nitc__loader___MGroup___mmodules_by_name(var_g, var65);
2812 }
2813 var_ms = var66;
2814 var_ = var_ms;
2815 {
2816 var67 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
2817 }
2818 var_68 = var67;
2819 for(;;) {
2820 {
2821 var69 = ((short int(*)(val* self))((((long)var_68&3)?class_info[((long)var_68&3)]:var_68->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_68); /* is_ok on <var_68:IndexedIterator[MModule]>*/
2822 }
2823 if (var69){
2824 } else {
2825 goto BREAK_label70;
2826 }
2827 {
2828 var71 = ((val*(*)(val* self))((((long)var_68&3)?class_info[((long)var_68&3)]:var_68->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_68); /* item on <var_68:IndexedIterator[MModule]>*/
2829 }
2830 var_m = var71;
2831 {
2832 var72 = nitc___nitc__MModule___nitc__model_base__MEntity__full_name(var_m);
2833 }
2834 {
2835 var73 = ((short int(*)(val* self, val* p0))(var72->class->vft[COLOR_core__kernel__Object___61d_61d]))(var72, var_path); /* == on <var72:String>*/
2836 }
2837 if (var73){
2838 var = var_m;
2839 goto RET_LABEL;
2840 } else {
2841 }
2842 {
2843 ((void(*)(val* self))((((long)var_68&3)?class_info[((long)var_68&3)]:var_68->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_68); /* next on <var_68:IndexedIterator[MModule]>*/
2844 }
2845 }
2846 BREAK_label70: (void)0;
2847 {
2848 ((void(*)(val* self))((((long)var_68&3)?class_info[((long)var_68&3)]:var_68->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_68); /* finish on <var_68:IndexedIterator[MModule]>*/
2849 }
2850 {
2851 { /* Inline array$AbstractArrayRead$length (var_ids) on <var_ids:Array[String]> */
2852 var76 = var_ids->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_ids:Array[String]> */
2853 var74 = var76;
2854 RET_LABEL75:(void)0;
2855 }
2856 }
2857 {
2858 { /* Inline kernel$Int$<= (var74,2l) on <var74:Int> */
2859 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
2860 /* <2l:Int> isa OTHER */
2861 var79 = 1; /* easy <2l:Int> isa OTHER*/
2862 if (unlikely(!var79)) {
2863 var_class_name = type_core__Int.name;
2864 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2865 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
2866 fatal_exit(1);
2867 }
2868 var80 = var74 <= 2l;
2869 var77 = var80;
2870 goto RET_LABEL78;
2871 RET_LABEL78:(void)0;
2872 }
2873 }
2874 if (var77){
2875 {
2876 { /* Inline array$AbstractArrayRead$length (var_ms) on <var_ms:Array[MModule]> */
2877 var83 = var_ms->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_ms:Array[MModule]> */
2878 var81 = var83;
2879 RET_LABEL82:(void)0;
2880 }
2881 }
2882 {
2883 { /* Inline kernel$Int$== (var81,1l) on <var81:Int> */
2884 var86 = var81 == 1l;
2885 var84 = var86;
2886 goto RET_LABEL85;
2887 RET_LABEL85:(void)0;
2888 }
2889 }
2890 if (var84){
2891 {
2892 var87 = core___core__SequenceRead___Collection__first(var_ms);
2893 }
2894 var = var87;
2895 goto RET_LABEL;
2896 } else {
2897 }
2898 {
2899 { /* Inline array$AbstractArrayRead$length (var_ms) on <var_ms:Array[MModule]> */
2900 var90 = var_ms->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_ms:Array[MModule]> */
2901 var88 = var90;
2902 RET_LABEL89:(void)0;
2903 }
2904 }
2905 {
2906 { /* Inline kernel$Int$> (var88,1l) on <var88:Int> */
2907 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2908 /* <1l:Int> isa OTHER */
2909 var93 = 1; /* easy <1l:Int> isa OTHER*/
2910 if (unlikely(!var93)) {
2911 var_class_name96 = type_core__Int.name;
2912 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name96);
2913 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
2914 fatal_exit(1);
2915 }
2916 var97 = var88 > 1l;
2917 var91 = var97;
2918 goto RET_LABEL92;
2919 RET_LABEL92:(void)0;
2920 }
2921 }
2922 if (var91){
2923 var98 = NEW_core__Array(&type_core__Array__core__String);
2924 {
2925 core___core__Array___core__kernel__Object__init(var98); /* Direct call array$Array$init on <var98:Array[String]>*/
2926 }
2927 var_l = var98;
2928 var_99 = var_ms;
2929 {
2930 var100 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_99);
2931 }
2932 var_101 = var100;
2933 for(;;) {
2934 {
2935 var102 = ((short int(*)(val* self))((((long)var_101&3)?class_info[((long)var_101&3)]:var_101->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_101); /* is_ok on <var_101:IndexedIterator[MModule]>*/
2936 }
2937 if (var102){
2938 } else {
2939 goto BREAK_label103;
2940 }
2941 {
2942 var104 = ((val*(*)(val* self))((((long)var_101&3)?class_info[((long)var_101&3)]:var_101->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_101); /* item on <var_101:IndexedIterator[MModule]>*/
2943 }
2944 var_m105 = var104;
2945 {
2946 var106 = nitc___nitc__MModule___filepath(var_m105);
2947 }
2948 var_fp = var106;
2949 if (var_fp == NULL) {
2950 var107 = 0; /* is null */
2951 } else {
2952 var107 = 1; /* arg is null and recv is not */
2953 }
2954 if (0) {
2955 { /* Inline kernel$Object$!= (var_fp,((val*)NULL)) on <var_fp:nullable String> */
2956 var_other = ((val*)NULL);
2957 {
2958 var110 = ((short int(*)(val* self, val* p0))(var_fp->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_fp, var_other); /* == on <var_fp:nullable String(String)>*/
2959 }
2960 var111 = !var110;
2961 var108 = var111;
2962 goto RET_LABEL109;
2963 RET_LABEL109:(void)0;
2964 }
2965 var107 = var108;
2966 }
2967 if (var107){
2968 if (unlikely(varonce112==NULL)) {
2969 var113 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
2970 if (likely(varonce114!=NULL)) {
2971 var115 = varonce114;
2972 } else {
2973 var116 = " (";
2974 var118 = (val*)(2l<<2|1);
2975 var119 = (val*)(2l<<2|1);
2976 var120 = (val*)((long)(0)<<2|3);
2977 var121 = (val*)((long)(0)<<2|3);
2978 var117 = core__flat___CString___to_s_unsafe(var116, var118, var119, var120, var121);
2979 var115 = var117;
2980 varonce114 = var115;
2981 }
2982 ((struct instance_core__NativeArray*)var113)->values[0]=var115;
2983 if (likely(varonce122!=NULL)) {
2984 var123 = varonce122;
2985 } else {
2986 var124 = ")";
2987 var126 = (val*)(1l<<2|1);
2988 var127 = (val*)(1l<<2|1);
2989 var128 = (val*)((long)(0)<<2|3);
2990 var129 = (val*)((long)(0)<<2|3);
2991 var125 = core__flat___CString___to_s_unsafe(var124, var126, var127, var128, var129);
2992 var123 = var125;
2993 varonce122 = var123;
2994 }
2995 ((struct instance_core__NativeArray*)var113)->values[2]=var123;
2996 } else {
2997 var113 = varonce112;
2998 varonce112 = NULL;
2999 }
3000 ((struct instance_core__NativeArray*)var113)->values[1]=var_fp;
3001 {
3002 var130 = ((val*(*)(val* self))(var113->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var113); /* native_to_s on <var113:NativeArray[String]>*/
3003 }
3004 varonce112 = var113;
3005 var_fp = var130;
3006 } else {
3007 if (likely(varonce131!=NULL)) {
3008 var132 = varonce131;
3009 } else {
3010 var133 = "";
3011 var135 = (val*)(0l<<2|1);
3012 var136 = (val*)(0l<<2|1);
3013 var137 = (val*)((long)(0)<<2|3);
3014 var138 = (val*)((long)(0)<<2|3);
3015 var134 = core__flat___CString___to_s_unsafe(var133, var135, var136, var137, var138);
3016 var132 = var134;
3017 varonce131 = var132;
3018 }
3019 var_fp = var132;
3020 }
3021 if (unlikely(varonce139==NULL)) {
3022 var140 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
3023 if (likely(varonce141!=NULL)) {
3024 var142 = varonce141;
3025 } else {
3026 var143 = "`";
3027 var145 = (val*)(1l<<2|1);
3028 var146 = (val*)(1l<<2|1);
3029 var147 = (val*)((long)(0)<<2|3);
3030 var148 = (val*)((long)(0)<<2|3);
3031 var144 = core__flat___CString___to_s_unsafe(var143, var145, var146, var147, var148);
3032 var142 = var144;
3033 varonce141 = var142;
3034 }
3035 ((struct instance_core__NativeArray*)var140)->values[0]=var142;
3036 if (likely(varonce149!=NULL)) {
3037 var150 = varonce149;
3038 } else {
3039 var151 = "`";
3040 var153 = (val*)(1l<<2|1);
3041 var154 = (val*)(1l<<2|1);
3042 var155 = (val*)((long)(0)<<2|3);
3043 var156 = (val*)((long)(0)<<2|3);
3044 var152 = core__flat___CString___to_s_unsafe(var151, var153, var154, var155, var156);
3045 var150 = var152;
3046 varonce149 = var150;
3047 }
3048 ((struct instance_core__NativeArray*)var140)->values[2]=var150;
3049 } else {
3050 var140 = varonce139;
3051 varonce139 = NULL;
3052 }
3053 {
3054 var157 = nitc___nitc__MModule___nitc__model_base__MEntity__full_name(var_m105);
3055 }
3056 ((struct instance_core__NativeArray*)var140)->values[1]=var157;
3057 ((struct instance_core__NativeArray*)var140)->values[3]=var_fp;
3058 {
3059 var158 = ((val*(*)(val* self))(var140->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var140); /* native_to_s on <var140:NativeArray[String]>*/
3060 }
3061 varonce139 = var140;
3062 {
3063 core___core__Array___core__abstract_collection__SimpleCollection__add(var_l, var158); /* Direct call array$Array$add on <var_l:Array[String]>*/
3064 }
3065 {
3066 ((void(*)(val* self))((((long)var_101&3)?class_info[((long)var_101&3)]:var_101->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_101); /* next on <var_101:IndexedIterator[MModule]>*/
3067 }
3068 }
3069 BREAK_label103: (void)0;
3070 {
3071 ((void(*)(val* self))((((long)var_101&3)?class_info[((long)var_101&3)]:var_101->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_101); /* finish on <var_101:IndexedIterator[MModule]>*/
3072 }
3073 if (unlikely(varonce159==NULL)) {
3074 var160 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
3075 if (likely(varonce161!=NULL)) {
3076 var162 = varonce161;
3077 } else {
3078 var163 = "Error: conflicting module for `";
3079 var165 = (val*)(31l<<2|1);
3080 var166 = (val*)(31l<<2|1);
3081 var167 = (val*)((long)(0)<<2|3);
3082 var168 = (val*)((long)(0)<<2|3);
3083 var164 = core__flat___CString___to_s_unsafe(var163, var165, var166, var167, var168);
3084 var162 = var164;
3085 varonce161 = var162;
3086 }
3087 ((struct instance_core__NativeArray*)var160)->values[0]=var162;
3088 if (likely(varonce169!=NULL)) {
3089 var170 = varonce169;
3090 } else {
3091 var171 = "`: ";
3092 var173 = (val*)(3l<<2|1);
3093 var174 = (val*)(3l<<2|1);
3094 var175 = (val*)((long)(0)<<2|3);
3095 var176 = (val*)((long)(0)<<2|3);
3096 var172 = core__flat___CString___to_s_unsafe(var171, var173, var174, var175, var176);
3097 var170 = var172;
3098 varonce169 = var170;
3099 }
3100 ((struct instance_core__NativeArray*)var160)->values[2]=var170;
3101 if (likely(varonce177!=NULL)) {
3102 var178 = varonce177;
3103 } else {
3104 var179 = " ";
3105 var181 = (val*)(1l<<2|1);
3106 var182 = (val*)(1l<<2|1);
3107 var183 = (val*)((long)(0)<<2|3);
3108 var184 = (val*)((long)(0)<<2|3);
3109 var180 = core__flat___CString___to_s_unsafe(var179, var181, var182, var183, var184);
3110 var178 = var180;
3111 varonce177 = var178;
3112 }
3113 ((struct instance_core__NativeArray*)var160)->values[4]=var178;
3114 } else {
3115 var160 = varonce159;
3116 varonce159 = NULL;
3117 }
3118 ((struct instance_core__NativeArray*)var160)->values[1]=var_path;
3119 if (likely(varonce185!=NULL)) {
3120 var186 = varonce185;
3121 } else {
3122 var187 = ", ";
3123 var189 = (val*)(2l<<2|1);
3124 var190 = (val*)(2l<<2|1);
3125 var191 = (val*)((long)(0)<<2|3);
3126 var192 = (val*)((long)(0)<<2|3);
3127 var188 = core__flat___CString___to_s_unsafe(var187, var189, var190, var191, var192);
3128 var186 = var188;
3129 varonce185 = var186;
3130 }
3131 {
3132 var193 = core__abstract_text___Collection___join(var_l, var186, ((val*)NULL));
3133 }
3134 ((struct instance_core__NativeArray*)var160)->values[3]=var193;
3135 {
3136 var194 = ((val*(*)(val* self))(var160->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var160); /* native_to_s on <var160:NativeArray[String]>*/
3137 }
3138 varonce159 = var160;
3139 {
3140 { /* Inline loader$ModelBuilder$last_loader_error= (self,var194) on <self:ModelBuilder> */
3141 self->attrs[COLOR_nitc__loader__ModelBuilder___last_loader_error].val = var194; /* _last_loader_error on <self:ModelBuilder> */
3142 RET_LABEL195:(void)0;
3143 }
3144 }
3145 var = ((val*)NULL);
3146 goto RET_LABEL;
3147 } else {
3148 }
3149 } else {
3150 }
3151 var196 = NEW_more_collections__BestDistance(&type_more_collections__BestDistance__core__String);
3152 {
3153 var197 = ((long(*)(val* self))(var_path->class->vft[COLOR_core__abstract_text__Text__length]))(var_path); /* length on <var_path:String>*/
3154 }
3155 {
3156 { /* Inline kernel$Int$/ (var197,2l) on <var197:Int> */
3157 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
3158 /* <2l:Int> isa OTHER */
3159 var200 = 1; /* easy <2l:Int> isa OTHER*/
3160 if (unlikely(!var200)) {
3161 var_class_name203 = type_core__Int.name;
3162 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name203);
3163 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 733);
3164 fatal_exit(1);
3165 }
3166 var204 = var197 / 2l;
3167 var198 = var204;
3168 goto RET_LABEL199;
3169 RET_LABEL199:(void)0;
3170 }
3171 }
3172 {
3173 ((void(*)(val* self, long p0))(var196->class->vft[COLOR_more_collections__BestDistance__best_distance_61d]))(var196, var198); /* best_distance= on <var196:BestDistance[String]>*/
3174 }
3175 {
3176 ((void(*)(val* self))(var196->class->vft[COLOR_core__kernel__Object__init]))(var196); /* init on <var196:BestDistance[String]>*/
3177 }
3178 var_bests = var196;
3179 {
3180 { /* Inline mpackage$MGroup$mpackage (var_g) on <var_g:nullable MGroup(MGroup)> */
3181 var207 = var_g->attrs[COLOR_nitc__mpackage__MGroup___mpackage].val; /* _mpackage on <var_g:nullable MGroup(MGroup)> */
3182 if (unlikely(var207 == NULL)) {
3183 if(catchStack.cursor >= 0){
3184 longjmp(catchStack.envs[catchStack.cursor], 1);
3185 }
3186 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpackage");
3187 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 76);
3188 fatal_exit(1);
3189 }
3190 var205 = var207;
3191 RET_LABEL206:(void)0;
3192 }
3193 }
3194 {
3195 { /* Inline mpackage$MPackage$mgroups (var205) on <var205:MPackage> */
3196 var210 = var205->attrs[COLOR_nitc__mpackage__MPackage___mgroups].val; /* _mgroups on <var205:MPackage> */
3197 if (unlikely(var210 == NULL)) {
3198 if(catchStack.cursor >= 0){
3199 longjmp(catchStack.envs[catchStack.cursor], 1);
3200 }
3201 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
3202 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 42);
3203 fatal_exit(1);
3204 }
3205 var208 = var210;
3206 RET_LABEL209:(void)0;
3207 }
3208 }
3209 var_211 = var208;
3210 {
3211 var212 = poset___poset__POSet___core__abstract_collection__Collection__iterator(var_211);
3212 }
3213 var_213 = var212;
3214 for(;;) {
3215 {
3216 var214 = ((short int(*)(val* self))((((long)var_213&3)?class_info[((long)var_213&3)]:var_213->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_213); /* is_ok on <var_213:Iterator[MGroup]>*/
3217 }
3218 if (var214){
3219 } else {
3220 goto BREAK_label215;
3221 }
3222 {
3223 var216 = ((val*(*)(val* self))((((long)var_213&3)?class_info[((long)var_213&3)]:var_213->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_213); /* item on <var_213:Iterator[MGroup]>*/
3224 }
3225 var_sg = var216;
3226 {
3227 { /* Inline mmodule$MGroup$mmodules (var_sg) on <var_sg:MGroup> */
3228 var219 = var_sg->attrs[COLOR_nitc__mmodule__MGroup___mmodules].val; /* _mmodules on <var_sg:MGroup> */
3229 if (unlikely(var219 == NULL)) {
3230 if(catchStack.cursor >= 0){
3231 longjmp(catchStack.envs[catchStack.cursor], 1);
3232 }
3233 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodules");
3234 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 54);
3235 fatal_exit(1);
3236 }
3237 var217 = var219;
3238 RET_LABEL218:(void)0;
3239 }
3240 }
3241 var_220 = var217;
3242 {
3243 var221 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_220);
3244 }
3245 var_222 = var221;
3246 for(;;) {
3247 {
3248 var223 = ((short int(*)(val* self))((((long)var_222&3)?class_info[((long)var_222&3)]:var_222->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_222); /* is_ok on <var_222:IndexedIterator[MModule]>*/
3249 }
3250 if (var223){
3251 } else {
3252 goto BREAK_label224;
3253 }
3254 {
3255 var225 = ((val*(*)(val* self))((((long)var_222&3)?class_info[((long)var_222&3)]:var_222->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_222); /* item on <var_222:IndexedIterator[MModule]>*/
3256 }
3257 var_m226 = var225;
3258 {
3259 var227 = nitc___nitc__MModule___nitc__model_base__MEntity__full_name(var_m226);
3260 }
3261 {
3262 var228 = core___core__Text___levenshtein_distance(var_path, var227);
3263 }
3264 var_d = var228;
3265 {
3266 var229 = nitc___nitc__MModule___nitc__model_base__MEntity__full_name(var_m226);
3267 }
3268 {
3269 var230 = more_collections___more_collections__BestDistance___update(var_bests, var_d, var229);
3270 }
3271 {
3272 ((void(*)(val* self))((((long)var_222&3)?class_info[((long)var_222&3)]:var_222->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_222); /* next on <var_222:IndexedIterator[MModule]>*/
3273 }
3274 }
3275 BREAK_label224: (void)0;
3276 {
3277 ((void(*)(val* self))((((long)var_222&3)?class_info[((long)var_222&3)]:var_222->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_222); /* finish on <var_222:IndexedIterator[MModule]>*/
3278 }
3279 {
3280 ((void(*)(val* self))((((long)var_213&3)?class_info[((long)var_213&3)]:var_213->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_213); /* next on <var_213:Iterator[MGroup]>*/
3281 }
3282 }
3283 BREAK_label215: (void)0;
3284 {
3285 ((void(*)(val* self))((((long)var_213&3)?class_info[((long)var_213&3)]:var_213->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_213); /* finish on <var_213:Iterator[MGroup]>*/
3286 }
3287 if (unlikely(varonce231==NULL)) {
3288 var232 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3289 if (likely(varonce233!=NULL)) {
3290 var234 = varonce233;
3291 } else {
3292 var235 = "Error: cannot find module `";
3293 var237 = (val*)(27l<<2|1);
3294 var238 = (val*)(27l<<2|1);
3295 var239 = (val*)((long)(0)<<2|3);
3296 var240 = (val*)((long)(0)<<2|3);
3297 var236 = core__flat___CString___to_s_unsafe(var235, var237, var238, var239, var240);
3298 var234 = var236;
3299 varonce233 = var234;
3300 }
3301 ((struct instance_core__NativeArray*)var232)->values[0]=var234;
3302 if (likely(varonce241!=NULL)) {
3303 var242 = varonce241;
3304 } else {
3305 var243 = "`.";
3306 var245 = (val*)(2l<<2|1);
3307 var246 = (val*)(2l<<2|1);
3308 var247 = (val*)((long)(0)<<2|3);
3309 var248 = (val*)((long)(0)<<2|3);
3310 var244 = core__flat___CString___to_s_unsafe(var243, var245, var246, var247, var248);
3311 var242 = var244;
3312 varonce241 = var242;
3313 }
3314 ((struct instance_core__NativeArray*)var232)->values[2]=var242;
3315 } else {
3316 var232 = varonce231;
3317 varonce231 = NULL;
3318 }
3319 ((struct instance_core__NativeArray*)var232)->values[1]=var_path;
3320 {
3321 var249 = ((val*(*)(val* self))(var232->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var232); /* native_to_s on <var232:NativeArray[String]>*/
3322 }
3323 varonce231 = var232;
3324 var_last_loader_error = var249;
3325 {
3326 { /* Inline more_collections$BestDistance$best_items (var_bests) on <var_bests:BestDistance[String]> */
3327 var252 = var_bests->attrs[COLOR_more_collections__BestDistance___best_items].val; /* _best_items on <var_bests:BestDistance[String]> */
3328 if (unlikely(var252 == NULL)) {
3329 if(catchStack.cursor >= 0){
3330 longjmp(catchStack.envs[catchStack.cursor], 1);
3331 }
3332 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _best_items");
3333 PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 562);
3334 fatal_exit(1);
3335 }
3336 var250 = var252;
3337 RET_LABEL251:(void)0;
3338 }
3339 }
3340 {
3341 var253 = core___core__Collection___not_empty(var250);
3342 }
3343 if (var253){
3344 if (likely(varonce254!=NULL)) {
3345 var255 = varonce254;
3346 } else {
3347 var256 = " Did you mean ";
3348 var258 = (val*)(14l<<2|1);
3349 var259 = (val*)(14l<<2|1);
3350 var260 = (val*)((long)(0)<<2|3);
3351 var261 = (val*)((long)(0)<<2|3);
3352 var257 = core__flat___CString___to_s_unsafe(var256, var258, var259, var260, var261);
3353 var255 = var257;
3354 varonce254 = var255;
3355 }
3356 {
3357 { /* Inline more_collections$BestDistance$best_items (var_bests) on <var_bests:BestDistance[String]> */
3358 var264 = var_bests->attrs[COLOR_more_collections__BestDistance___best_items].val; /* _best_items on <var_bests:BestDistance[String]> */
3359 if (unlikely(var264 == NULL)) {
3360 if(catchStack.cursor >= 0){
3361 longjmp(catchStack.envs[catchStack.cursor], 1);
3362 }
3363 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _best_items");
3364 PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 562);
3365 fatal_exit(1);
3366 }
3367 var262 = var264;
3368 RET_LABEL263:(void)0;
3369 }
3370 }
3371 if (likely(varonce265!=NULL)) {
3372 var266 = varonce265;
3373 } else {
3374 var267 = ", ";
3375 var269 = (val*)(2l<<2|1);
3376 var270 = (val*)(2l<<2|1);
3377 var271 = (val*)((long)(0)<<2|3);
3378 var272 = (val*)((long)(0)<<2|3);
3379 var268 = core__flat___CString___to_s_unsafe(var267, var269, var270, var271, var272);
3380 var266 = var268;
3381 varonce265 = var266;
3382 }
3383 if (likely(varonce273!=NULL)) {
3384 var274 = varonce273;
3385 } else {
3386 var275 = " or ";
3387 var277 = (val*)(4l<<2|1);
3388 var278 = (val*)(4l<<2|1);
3389 var279 = (val*)((long)(0)<<2|3);
3390 var280 = (val*)((long)(0)<<2|3);
3391 var276 = core__flat___CString___to_s_unsafe(var275, var277, var278, var279, var280);
3392 var274 = var276;
3393 varonce273 = var274;
3394 }
3395 {
3396 var281 = core__abstract_text___Collection___join(var262, var266, var274);
3397 }
3398 {
3399 var282 = ((val*(*)(val* self, val* p0))(var255->class->vft[COLOR_core__abstract_text__Text___43d]))(var255, var281); /* + on <var255:String>*/
3400 }
3401 if (likely(varonce283!=NULL)) {
3402 var284 = varonce283;
3403 } else {
3404 var285 = "?";
3405 var287 = (val*)(1l<<2|1);
3406 var288 = (val*)(1l<<2|1);
3407 var289 = (val*)((long)(0)<<2|3);
3408 var290 = (val*)((long)(0)<<2|3);
3409 var286 = core__flat___CString___to_s_unsafe(var285, var287, var288, var289, var290);
3410 var284 = var286;
3411 varonce283 = var284;
3412 }
3413 {
3414 var291 = ((val*(*)(val* self, val* p0))(var282->class->vft[COLOR_core__abstract_text__Text___43d]))(var282, var284); /* + on <var282:Text(String)>*/
3415 }
3416 {
3417 var292 = ((val*(*)(val* self, val* p0))(var_last_loader_error->class->vft[COLOR_core__abstract_text__Text___43d]))(var_last_loader_error, var291); /* + on <var_last_loader_error:String>*/
3418 }
3419 var_last_loader_error = var292;
3420 } else {
3421 }
3422 {
3423 { /* Inline loader$ModelBuilder$last_loader_error= (self,var_last_loader_error) on <self:ModelBuilder> */
3424 self->attrs[COLOR_nitc__loader__ModelBuilder___last_loader_error].val = var_last_loader_error; /* _last_loader_error on <self:ModelBuilder> */
3425 RET_LABEL293:(void)0;
3426 }
3427 }
3428 var = ((val*)NULL);
3429 goto RET_LABEL;
3430 } else {
3431 }
3432 } else {
3433 }
3434 var = ((val*)NULL);
3435 goto RET_LABEL;
3436 BREAK_label: (void)0;
3437 } else {
3438 }
3439 {
3440 var294 = core__file___Text___file_exists(var_path);
3441 }
3442 var295 = !var294;
3443 if (var295){
3444 var = ((val*)NULL);
3445 goto RET_LABEL;
3446 } else {
3447 }
3448 {
3449 { /* Inline loader$ModelBuilder$identified_modules_by_path (self) on <self:ModelBuilder> */
3450 var298 = self->attrs[COLOR_nitc__loader__ModelBuilder___identified_modules_by_path].val; /* _identified_modules_by_path on <self:ModelBuilder> */
3451 if (unlikely(var298 == NULL)) {
3452 if(catchStack.cursor >= 0){
3453 longjmp(catchStack.envs[catchStack.cursor], 1);
3454 }
3455 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_modules_by_path");
3456 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 316);
3457 fatal_exit(1);
3458 }
3459 var296 = var298;
3460 RET_LABEL297:(void)0;
3461 }
3462 }
3463 {
3464 var299 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var296, var_path);
3465 }
3466 if (var299){
3467 {
3468 { /* Inline loader$ModelBuilder$identified_modules_by_path (self) on <self:ModelBuilder> */
3469 var302 = self->attrs[COLOR_nitc__loader__ModelBuilder___identified_modules_by_path].val; /* _identified_modules_by_path on <self:ModelBuilder> */
3470 if (unlikely(var302 == NULL)) {
3471 if(catchStack.cursor >= 0){
3472 longjmp(catchStack.envs[catchStack.cursor], 1);
3473 }
3474 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_modules_by_path");
3475 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 316);
3476 fatal_exit(1);
3477 }
3478 var300 = var302;
3479 RET_LABEL301:(void)0;
3480 }
3481 }
3482 {
3483 var303 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var300, var_path);
3484 }
3485 var = var303;
3486 goto RET_LABEL;
3487 } else {
3488 }
3489 {
3490 var304 = nitc__loader___ModelBuilder___module_absolute_path(self, var_path);
3491 }
3492 var_rp = var304;
3493 {
3494 { /* Inline loader$ModelBuilder$identified_modules_by_path (self) on <self:ModelBuilder> */
3495 var307 = self->attrs[COLOR_nitc__loader__ModelBuilder___identified_modules_by_path].val; /* _identified_modules_by_path on <self:ModelBuilder> */
3496 if (unlikely(var307 == NULL)) {
3497 if(catchStack.cursor >= 0){
3498 longjmp(catchStack.envs[catchStack.cursor], 1);
3499 }
3500 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_modules_by_path");
3501 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 316);
3502 fatal_exit(1);
3503 }
3504 var305 = var307;
3505 RET_LABEL306:(void)0;
3506 }
3507 }
3508 {
3509 var308 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var305, var_rp);
3510 }
3511 if (var308){
3512 {
3513 { /* Inline loader$ModelBuilder$identified_modules_by_path (self) on <self:ModelBuilder> */
3514 var311 = self->attrs[COLOR_nitc__loader__ModelBuilder___identified_modules_by_path].val; /* _identified_modules_by_path on <self:ModelBuilder> */
3515 if (unlikely(var311 == NULL)) {
3516 if(catchStack.cursor >= 0){
3517 longjmp(catchStack.envs[catchStack.cursor], 1);
3518 }
3519 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_modules_by_path");
3520 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 316);
3521 fatal_exit(1);
3522 }
3523 var309 = var311;
3524 RET_LABEL310:(void)0;
3525 }
3526 }
3527 {
3528 var312 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var309, var_rp);
3529 }
3530 var = var312;
3531 goto RET_LABEL;
3532 } else {
3533 }
3534 if (likely(varonce313!=NULL)) {
3535 var314 = varonce313;
3536 } else {
3537 var315 = ".nit";
3538 var317 = (val*)(4l<<2|1);
3539 var318 = (val*)(4l<<2|1);
3540 var319 = (val*)((long)(0)<<2|3);
3541 var320 = (val*)((long)(0)<<2|3);
3542 var316 = core__flat___CString___to_s_unsafe(var315, var317, var318, var319, var320);
3543 var314 = var316;
3544 varonce313 = var314;
3545 }
3546 {
3547 var321 = ((val*(*)(val* self, val* p0))(var_path->class->vft[COLOR_core__file__String__basename]))(var_path, var314); /* basename on <var_path:String>*/
3548 }
3549 var_pn = var321;
3550 if (likely(varonce322!=NULL)) {
3551 var323 = varonce322;
3552 } else {
3553 var324 = "..";
3554 var326 = (val*)(2l<<2|1);
3555 var327 = (val*)(2l<<2|1);
3556 var328 = (val*)((long)(0)<<2|3);
3557 var329 = (val*)((long)(0)<<2|3);
3558 var325 = core__flat___CString___to_s_unsafe(var324, var326, var327, var328, var329);
3559 var323 = var325;
3560 varonce322 = var323;
3561 }
3562 {
3563 var330 = core__file___String___join_path(var_path, var323);
3564 }
3565 {
3566 var331 = core__file___String___simplify_path(var330);
3567 }
3568 var_mgrouppath = var331;
3569 {
3570 var332 = nitc__loader___ModelBuilder___identify_group(self, var_mgrouppath);
3571 }
3572 var_mgroup333 = var332;
3573 if (var_mgroup333 == NULL) {
3574 var334 = 0; /* is null */
3575 } else {
3576 var334 = 1; /* arg is null and recv is not */
3577 }
3578 if (0) {
3579 { /* Inline kernel$Object$!= (var_mgroup333,((val*)NULL)) on <var_mgroup333:nullable MGroup> */
3580 var_other = ((val*)NULL);
3581 {
3582 var337 = ((short int(*)(val* self, val* p0))(var_mgroup333->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mgroup333, var_other); /* == on <var_mgroup333:nullable MGroup(MGroup)>*/
3583 }
3584 var338 = !var337;
3585 var335 = var338;
3586 goto RET_LABEL336;
3587 RET_LABEL336:(void)0;
3588 }
3589 var334 = var335;
3590 }
3591 if (var334){
3592 {
3593 { /* Inline mpackage$MGroup$mpackage (var_mgroup333) on <var_mgroup333:nullable MGroup(MGroup)> */
3594 var341 = var_mgroup333->attrs[COLOR_nitc__mpackage__MGroup___mpackage].val; /* _mpackage on <var_mgroup333:nullable MGroup(MGroup)> */
3595 if (unlikely(var341 == NULL)) {
3596 if(catchStack.cursor >= 0){
3597 longjmp(catchStack.envs[catchStack.cursor], 1);
3598 }
3599 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpackage");
3600 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 76);
3601 fatal_exit(1);
3602 }
3603 var339 = var341;
3604 RET_LABEL340:(void)0;
3605 }
3606 }
3607 var_mpackage = var339;
3608 {
3609 var342 = nitc__loader___MPackage___accept(var_mpackage, var_path);
3610 }
3611 var343 = !var342;
3612 if (var343){
3613 var_mgroup333 = ((val*)NULL);
3614 {
3615 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
3616 var346 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
3617 if (unlikely(var346 == NULL)) {
3618 if(catchStack.cursor >= 0){
3619 longjmp(catchStack.envs[catchStack.cursor], 1);
3620 }
3621 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3622 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
3623 fatal_exit(1);
3624 }
3625 var344 = var346;
3626 RET_LABEL345:(void)0;
3627 }
3628 }
3629 if (unlikely(varonce347==NULL)) {
3630 var348 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
3631 if (likely(varonce349!=NULL)) {
3632 var350 = varonce349;
3633 } else {
3634 var351 = "module `";
3635 var353 = (val*)(8l<<2|1);
3636 var354 = (val*)(8l<<2|1);
3637 var355 = (val*)((long)(0)<<2|3);
3638 var356 = (val*)((long)(0)<<2|3);
3639 var352 = core__flat___CString___to_s_unsafe(var351, var353, var354, var355, var356);
3640 var350 = var352;
3641 varonce349 = var350;
3642 }
3643 ((struct instance_core__NativeArray*)var348)->values[0]=var350;
3644 if (likely(varonce357!=NULL)) {
3645 var358 = varonce357;
3646 } else {
3647 var359 = "` excluded from package `";
3648 var361 = (val*)(25l<<2|1);
3649 var362 = (val*)(25l<<2|1);
3650 var363 = (val*)((long)(0)<<2|3);
3651 var364 = (val*)((long)(0)<<2|3);
3652 var360 = core__flat___CString___to_s_unsafe(var359, var361, var362, var363, var364);
3653 var358 = var360;
3654 varonce357 = var358;
3655 }
3656 ((struct instance_core__NativeArray*)var348)->values[2]=var358;
3657 if (likely(varonce365!=NULL)) {
3658 var366 = varonce365;
3659 } else {
3660 var367 = "`";
3661 var369 = (val*)(1l<<2|1);
3662 var370 = (val*)(1l<<2|1);
3663 var371 = (val*)((long)(0)<<2|3);
3664 var372 = (val*)((long)(0)<<2|3);
3665 var368 = core__flat___CString___to_s_unsafe(var367, var369, var370, var371, var372);
3666 var366 = var368;
3667 varonce365 = var366;
3668 }
3669 ((struct instance_core__NativeArray*)var348)->values[4]=var366;
3670 } else {
3671 var348 = varonce347;
3672 varonce347 = NULL;
3673 }
3674 ((struct instance_core__NativeArray*)var348)->values[1]=var_path;
3675 {
3676 var373 = ((val*(*)(val* self))(var_mpackage->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mpackage); /* to_s on <var_mpackage:MPackage>*/
3677 }
3678 ((struct instance_core__NativeArray*)var348)->values[3]=var373;
3679 {
3680 var374 = ((val*(*)(val* self))(var348->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var348); /* native_to_s on <var348:NativeArray[String]>*/
3681 }
3682 varonce347 = var348;
3683 {
3684 nitc___nitc__ToolContext___info(var344, var374, 2l); /* Direct call toolcontext$ToolContext$info on <var344:ToolContext>*/
3685 }
3686 } else {
3687 }
3688 } else {
3689 }
3690 if (var_mgroup333 == NULL) {
3691 var375 = 1; /* is null */
3692 } else {
3693 var375 = 0; /* arg is null but recv is not */
3694 }
3695 if (0) {
3696 { /* Inline kernel$Object$== (var_mgroup333,((val*)NULL)) on <var_mgroup333:nullable MGroup> */
3697 var_other378 = ((val*)NULL);
3698 {
3699 { /* Inline kernel$Object$is_same_instance (var_mgroup333,var_other378) on <var_mgroup333:nullable MGroup(MGroup)> */
3700 var381 = var_mgroup333 == var_other378;
3701 var379 = var381;
3702 goto RET_LABEL380;
3703 RET_LABEL380:(void)0;
3704 }
3705 }
3706 var376 = var379;
3707 goto RET_LABEL377;
3708 RET_LABEL377:(void)0;
3709 }
3710 var375 = var376;
3711 }
3712 if (var375){
3713 var382 = NEW_nitc__Location(&type_nitc__Location);
3714 {
3715 nitc___nitc__Location___opaque_file(var382, var_path); /* Direct call location$Location$opaque_file on <var382:Location>*/
3716 }
3717 var_loc = var382;
3718 var383 = NEW_nitc__MPackage(&type_nitc__MPackage);
3719 {
3720 { /* Inline modelbuilder_base$ModelBuilder$model (self) on <self:ModelBuilder> */
3721 var386 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
3722 if (unlikely(var386 == NULL)) {
3723 if(catchStack.cursor >= 0){
3724 longjmp(catchStack.envs[catchStack.cursor], 1);
3725 }
3726 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
3727 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 44);
3728 fatal_exit(1);
3729 }
3730 var384 = var386;
3731 RET_LABEL385:(void)0;
3732 }
3733 }
3734 {
3735 ((void(*)(val* self, val* p0))(var383->class->vft[COLOR_nitc__mpackage__MPackage__name_61d]))(var383, var_pn); /* name= on <var383:MPackage>*/
3736 }
3737 {
3738 ((void(*)(val* self, val* p0))(var383->class->vft[COLOR_nitc__mpackage__MPackage__model_61d]))(var383, var384); /* model= on <var383:MPackage>*/
3739 }
3740 {
3741 ((void(*)(val* self, val* p0))(var383->class->vft[COLOR_nitc__mpackage__MPackage__location_61d]))(var383, var_loc); /* location= on <var383:MPackage>*/
3742 }
3743 {
3744 ((void(*)(val* self))(var383->class->vft[COLOR_core__kernel__Object__init]))(var383); /* init on <var383:MPackage>*/
3745 }
3746 var_mpackage387 = var383;
3747 var388 = NEW_nitc__MGroup(&type_nitc__MGroup);
3748 {
3749 ((void(*)(val* self, val* p0))(var388->class->vft[COLOR_nitc__mpackage__MGroup__name_61d]))(var388, var_pn); /* name= on <var388:MGroup>*/
3750 }
3751 {
3752 ((void(*)(val* self, val* p0))(var388->class->vft[COLOR_nitc__mpackage__MGroup__location_61d]))(var388, var_loc); /* location= on <var388:MGroup>*/
3753 }
3754 {
3755 ((void(*)(val* self, val* p0))(var388->class->vft[COLOR_nitc__mpackage__MGroup__mpackage_61d]))(var388, var_mpackage387); /* mpackage= on <var388:MGroup>*/
3756 }
3757 {
3758 ((void(*)(val* self, val* p0))(var388->class->vft[COLOR_nitc__mpackage__MGroup__parent_61d]))(var388, ((val*)NULL)); /* parent= on <var388:MGroup>*/
3759 }
3760 {
3761 ((void(*)(val* self))(var388->class->vft[COLOR_core__kernel__Object__init]))(var388); /* init on <var388:MGroup>*/
3762 }
3763 var_mgroup333 = var388;
3764 {
3765 { /* Inline mpackage$MPackage$root= (var_mpackage387,var_mgroup333) on <var_mpackage387:MPackage> */
3766 var_mpackage387->attrs[COLOR_nitc__mpackage__MPackage___root].val = var_mgroup333; /* _root on <var_mpackage387:MPackage> */
3767 RET_LABEL389:(void)0;
3768 }
3769 }
3770 {
3771 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
3772 var392 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
3773 if (unlikely(var392 == NULL)) {
3774 if(catchStack.cursor >= 0){
3775 longjmp(catchStack.envs[catchStack.cursor], 1);
3776 }
3777 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3778 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
3779 fatal_exit(1);
3780 }
3781 var390 = var392;
3782 RET_LABEL391:(void)0;
3783 }
3784 }
3785 if (unlikely(varonce393==NULL)) {
3786 var394 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
3787 if (likely(varonce395!=NULL)) {
3788 var396 = varonce395;
3789 } else {
3790 var397 = "found singleton package `";
3791 var399 = (val*)(25l<<2|1);
3792 var400 = (val*)(25l<<2|1);
3793 var401 = (val*)((long)(0)<<2|3);
3794 var402 = (val*)((long)(0)<<2|3);
3795 var398 = core__flat___CString___to_s_unsafe(var397, var399, var400, var401, var402);
3796 var396 = var398;
3797 varonce395 = var396;
3798 }
3799 ((struct instance_core__NativeArray*)var394)->values[0]=var396;
3800 if (likely(varonce403!=NULL)) {
3801 var404 = varonce403;
3802 } else {
3803 var405 = "` at ";
3804 var407 = (val*)(5l<<2|1);
3805 var408 = (val*)(5l<<2|1);
3806 var409 = (val*)((long)(0)<<2|3);
3807 var410 = (val*)((long)(0)<<2|3);
3808 var406 = core__flat___CString___to_s_unsafe(var405, var407, var408, var409, var410);
3809 var404 = var406;
3810 varonce403 = var404;
3811 }
3812 ((struct instance_core__NativeArray*)var394)->values[2]=var404;
3813 } else {
3814 var394 = varonce393;
3815 varonce393 = NULL;
3816 }
3817 ((struct instance_core__NativeArray*)var394)->values[1]=var_pn;
3818 ((struct instance_core__NativeArray*)var394)->values[3]=var_path;
3819 {
3820 var411 = ((val*(*)(val* self))(var394->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var394); /* native_to_s on <var394:NativeArray[String]>*/
3821 }
3822 varonce393 = var394;
3823 {
3824 nitc___nitc__ToolContext___info(var390, var411, 2l); /* Direct call toolcontext$ToolContext$info on <var390:ToolContext>*/
3825 }
3826 {
3827 var412 = core__file___String___dirname(var_path);
3828 }
3829 if (unlikely(varonce413==NULL)) {
3830 var414 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3831 if (likely(varonce415!=NULL)) {
3832 var416 = varonce415;
3833 } else {
3834 var417 = ".ini";
3835 var419 = (val*)(4l<<2|1);
3836 var420 = (val*)(4l<<2|1);
3837 var421 = (val*)((long)(0)<<2|3);
3838 var422 = (val*)((long)(0)<<2|3);
3839 var418 = core__flat___CString___to_s_unsafe(var417, var419, var420, var421, var422);
3840 var416 = var418;
3841 varonce415 = var416;
3842 }
3843 ((struct instance_core__NativeArray*)var414)->values[1]=var416;
3844 } else {
3845 var414 = varonce413;
3846 varonce413 = NULL;
3847 }
3848 ((struct instance_core__NativeArray*)var414)->values[0]=var_pn;
3849 {
3850 var423 = ((val*(*)(val* self))(var414->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var414); /* native_to_s on <var414:NativeArray[String]>*/
3851 }
3852 varonce413 = var414;
3853 {
3854 var424 = core__file___String____47d(var412, var423);
3855 }
3856 var_inipath = var424;
3857 {
3858 var425 = core__file___Text___file_exists(var_inipath);
3859 }
3860 if (var425){
3861 var426 = NEW_ini__ConfigTree(&type_ini__ConfigTree);
3862 {
3863 ((void(*)(val* self, val* p0))(var426->class->vft[COLOR_ini__ConfigTree__ini_file_61d]))(var426, var_inipath); /* ini_file= on <var426:ConfigTree>*/
3864 }
3865 {
3866 ((void(*)(val* self))(var426->class->vft[COLOR_core__kernel__Object__init]))(var426); /* init on <var426:ConfigTree>*/
3867 }
3868 var_ini = var426;
3869 {
3870 { /* Inline loader$MPackage$ini= (var_mpackage387,var_ini) on <var_mpackage387:MPackage> */
3871 var_mpackage387->attrs[COLOR_nitc__loader__MPackage___ini].val = var_ini; /* _ini on <var_mpackage387:MPackage> */
3872 RET_LABEL427:(void)0;
3873 }
3874 }
3875 } else {
3876 }
3877 } else {
3878 }
3879 var428 = NEW_nitc__Location(&type_nitc__Location);
3880 {
3881 nitc___nitc__Location___opaque_file(var428, var_path); /* Direct call location$Location$opaque_file on <var428:Location>*/
3882 }
3883 var_loc429 = var428;
3884 var430 = NEW_nitc__MModule(&type_nitc__MModule);
3885 {
3886 { /* Inline modelbuilder_base$ModelBuilder$model (self) on <self:ModelBuilder> */
3887 var433 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
3888 if (unlikely(var433 == NULL)) {
3889 if(catchStack.cursor >= 0){
3890 longjmp(catchStack.envs[catchStack.cursor], 1);
3891 }
3892 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
3893 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 44);
3894 fatal_exit(1);
3895 }
3896 var431 = var433;
3897 RET_LABEL432:(void)0;
3898 }
3899 }
3900 {
3901 ((void(*)(val* self, val* p0))(var430->class->vft[COLOR_nitc__mmodule__MModule__model_61d]))(var430, var431); /* model= on <var430:MModule>*/
3902 }
3903 {
3904 ((void(*)(val* self, val* p0))(var430->class->vft[COLOR_nitc__mmodule__MModule__mgroup_61d]))(var430, var_mgroup333); /* mgroup= on <var430:MModule>*/
3905 }
3906 {
3907 ((void(*)(val* self, val* p0))(var430->class->vft[COLOR_nitc__mmodule__MModule__name_61d]))(var430, var_pn); /* name= on <var430:MModule>*/
3908 }
3909 {
3910 ((void(*)(val* self, val* p0))(var430->class->vft[COLOR_nitc__mmodule__MModule__location_61d]))(var430, var_loc429); /* location= on <var430:MModule>*/
3911 }
3912 {
3913 ((void(*)(val* self))(var430->class->vft[COLOR_core__kernel__Object__init]))(var430); /* init on <var430:MModule>*/
3914 }
3915 var_res434 = var430;
3916 {
3917 { /* Inline loader$ModelBuilder$identified_modules_by_path (self) on <self:ModelBuilder> */
3918 var437 = self->attrs[COLOR_nitc__loader__ModelBuilder___identified_modules_by_path].val; /* _identified_modules_by_path on <self:ModelBuilder> */
3919 if (unlikely(var437 == NULL)) {
3920 if(catchStack.cursor >= 0){
3921 longjmp(catchStack.envs[catchStack.cursor], 1);
3922 }
3923 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_modules_by_path");
3924 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 316);
3925 fatal_exit(1);
3926 }
3927 var435 = var437;
3928 RET_LABEL436:(void)0;
3929 }
3930 }
3931 {
3932 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var435, var_rp, var_res434); /* Direct call hash_collection$HashMap$[]= on <var435:HashMap[String, nullable MModule]>*/
3933 }
3934 {
3935 { /* Inline loader$ModelBuilder$identified_modules_by_path (self) on <self:ModelBuilder> */
3936 var440 = self->attrs[COLOR_nitc__loader__ModelBuilder___identified_modules_by_path].val; /* _identified_modules_by_path on <self:ModelBuilder> */
3937 if (unlikely(var440 == NULL)) {
3938 if(catchStack.cursor >= 0){
3939 longjmp(catchStack.envs[catchStack.cursor], 1);
3940 }
3941 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_modules_by_path");
3942 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 316);
3943 fatal_exit(1);
3944 }
3945 var438 = var440;
3946 RET_LABEL439:(void)0;
3947 }
3948 }
3949 {
3950 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var438, var_path, var_res434); /* Direct call hash_collection$HashMap$[]= on <var438:HashMap[String, nullable MModule]>*/
3951 }
3952 {
3953 { /* Inline loader$ModelBuilder$identified_modules (self) on <self:ModelBuilder> */
3954 var443 = self->attrs[COLOR_nitc__loader__ModelBuilder___identified_modules].val; /* _identified_modules on <self:ModelBuilder> */
3955 if (unlikely(var443 == NULL)) {
3956 if(catchStack.cursor >= 0){
3957 longjmp(catchStack.envs[catchStack.cursor], 1);
3958 }
3959 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_modules");
3960 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 319);
3961 fatal_exit(1);
3962 }
3963 var441 = var443;
3964 RET_LABEL442:(void)0;
3965 }
3966 }
3967 {
3968 core___core__Array___core__abstract_collection__SimpleCollection__add(var441, var_res434); /* Direct call array$Array$add on <var441:Array[MModule]>*/
3969 }
3970 var = var_res434;
3971 goto RET_LABEL;
3972 RET_LABEL:;
3973 return var;
3974 }
3975 /* method loader$ModelBuilder$mgroups for (self: ModelBuilder): HashMap[String, nullable MGroup] */
3976 val* nitc__loader___ModelBuilder___mgroups(val* self) {
3977 val* var /* : HashMap[String, nullable MGroup] */;
3978 val* var1 /* : HashMap[String, nullable MGroup] */;
3979 var1 = self->attrs[COLOR_nitc__loader__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
3980 if (unlikely(var1 == NULL)) {
3981 if(catchStack.cursor >= 0){
3982 longjmp(catchStack.envs[catchStack.cursor], 1);
3983 }
3984 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
3985 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 477);
3986 fatal_exit(1);
3987 }
3988 var = var1;
3989 RET_LABEL:;
3990 return var;
3991 }
3992 /* method loader$ModelBuilder$identify_group for (self: ModelBuilder, String): nullable MGroup */
3993 val* nitc__loader___ModelBuilder___identify_group(val* self, val* p0) {
3994 val* var /* : nullable MGroup */;
3995 val* var_dirpath /* var dirpath: String */;
3996 val* var2 /* : nullable FileStat */;
3997 val* var_stat /* var stat: nullable FileStat */;
3998 short int var3 /* : Bool */;
3999 short int var4 /* : Bool */;
4000 short int var5 /* : Bool */;
4001 val* var_other /* var other: nullable Object */;
4002 short int var7 /* : Bool */;
4003 short int var9 /* : Bool */;
4004 short int var_ /* var : Bool */;
4005 short int var10 /* : Bool */;
4006 short int var11 /* : Bool */;
4007 val* var12 /* : SequenceRead[Char] */;
4008 val* var13 /* : nullable Object */;
4009 short int var14 /* : Bool */;
4010 val* var15 /* : Array[String] */;
4011 val* var17 /* : Array[String] */;
4012 val* var_18 /* var : Array[String] */;
4013 val* var19 /* : IndexedIterator[nullable Object] */;
4014 val* var_20 /* var : IndexedIterator[String] */;
4015 short int var21 /* : Bool */;
4016 val* var22 /* : nullable Object */;
4017 val* var_p /* var p: String */;
4018 val* var23 /* : String */;
4019 val* var_try /* var try: String */;
4020 val* var24 /* : nullable FileStat */;
4021 short int var25 /* : Bool */;
4022 short int var26 /* : Bool */;
4023 val* var_other28 /* var other: nullable Object */;
4024 short int var29 /* : Bool */;
4025 short int var30 /* : Bool */;
4026 short int var31 /* : Bool */;
4027 short int var32 /* : Bool */;
4028 val* var33 /* : NativeArray[String] */;
4029 static val* varonce;
4030 static val* varonce34;
4031 val* var35 /* : String */;
4032 char* var36 /* : CString */;
4033 val* var37 /* : String */;
4034 val* var38 /* : nullable Int */;
4035 val* var39 /* : nullable Int */;
4036 val* var40 /* : nullable Bool */;
4037 val* var41 /* : nullable Bool */;
4038 static val* varonce42;
4039 val* var43 /* : String */;
4040 char* var44 /* : CString */;
4041 val* var45 /* : String */;
4042 val* var46 /* : nullable Int */;
4043 val* var47 /* : nullable Int */;
4044 val* var48 /* : nullable Bool */;
4045 val* var49 /* : nullable Bool */;
4046 val* var50 /* : String */;
4047 val* var52 /* : String */;
4048 val* var_rdp /* var rdp: String */;
4049 val* var53 /* : HashMap[String, nullable MGroup] */;
4050 val* var55 /* : HashMap[String, nullable MGroup] */;
4051 short int var56 /* : Bool */;
4052 val* var57 /* : HashMap[String, nullable MGroup] */;
4053 val* var59 /* : HashMap[String, nullable MGroup] */;
4054 val* var60 /* : nullable Object */;
4055 val* var61 /* : String */;
4056 val* var_pn /* var pn: String */;
4057 val* var_ini /* var ini: nullable Object */;
4058 val* var_parent /* var parent: nullable Object */;
4059 static val* varonce62;
4060 val* var63 /* : String */;
4061 char* var64 /* : CString */;
4062 val* var65 /* : String */;
4063 val* var66 /* : nullable Int */;
4064 val* var67 /* : nullable Int */;
4065 val* var68 /* : nullable Bool */;
4066 val* var69 /* : nullable Bool */;
4067 val* var70 /* : String */;
4068 val* var_inipath /* var inipath: String */;
4069 short int var71 /* : Bool */;
4070 val* var72 /* : ConfigTree */;
4071 short int var73 /* : Bool */;
4072 short int var74 /* : Bool */;
4073 short int var76 /* : Bool */;
4074 short int var78 /* : Bool */;
4075 static val* varonce79;
4076 val* var80 /* : String */;
4077 char* var81 /* : CString */;
4078 val* var82 /* : String */;
4079 val* var83 /* : nullable Int */;
4080 val* var84 /* : nullable Int */;
4081 val* var85 /* : nullable Bool */;
4082 val* var86 /* : nullable Bool */;
4083 short int var87 /* : Bool */;
4084 val* var88 /* : HashMap[String, nullable MGroup] */;
4085 val* var90 /* : HashMap[String, nullable MGroup] */;
4086 val* var92 /* : NativeArray[String] */;
4087 static val* varonce91;
4088 static val* varonce93;
4089 val* var94 /* : String */;
4090 char* var95 /* : CString */;
4091 val* var96 /* : String */;
4092 val* var97 /* : nullable Int */;
4093 val* var98 /* : nullable Int */;
4094 val* var99 /* : nullable Bool */;
4095 val* var100 /* : nullable Bool */;
4096 static val* varonce101;
4097 val* var102 /* : String */;
4098 char* var103 /* : CString */;
4099 val* var104 /* : String */;
4100 val* var105 /* : nullable Int */;
4101 val* var106 /* : nullable Int */;
4102 val* var107 /* : nullable Bool */;
4103 val* var108 /* : nullable Bool */;
4104 val* var109 /* : String */;
4105 static val* varonce111;
4106 val* var112 /* : String */;
4107 char* var113 /* : CString */;
4108 val* var114 /* : String */;
4109 val* var115 /* : nullable Int */;
4110 val* var116 /* : nullable Int */;
4111 val* var117 /* : nullable Bool */;
4112 val* var118 /* : nullable Bool */;
4113 val* var119 /* : String */;
4114 short int var120 /* : Bool */;
4115 val* var121 /* : HashMap[String, nullable MGroup] */;
4116 val* var123 /* : HashMap[String, nullable MGroup] */;
4117 val* var125 /* : NativeArray[String] */;
4118 static val* varonce124;
4119 static val* varonce126;
4120 val* var127 /* : String */;
4121 char* var128 /* : CString */;
4122 val* var129 /* : String */;
4123 val* var130 /* : nullable Int */;
4124 val* var131 /* : nullable Int */;
4125 val* var132 /* : nullable Bool */;
4126 val* var133 /* : nullable Bool */;
4127 static val* varonce134;
4128 val* var135 /* : String */;
4129 char* var136 /* : CString */;
4130 val* var137 /* : String */;
4131 val* var138 /* : nullable Int */;
4132 val* var139 /* : nullable Int */;
4133 val* var140 /* : nullable Bool */;
4134 val* var141 /* : nullable Bool */;
4135 val* var142 /* : String */;
4136 static val* varonce144;
4137 val* var145 /* : String */;
4138 char* var146 /* : CString */;
4139 val* var147 /* : String */;
4140 val* var148 /* : nullable Int */;
4141 val* var149 /* : nullable Int */;
4142 val* var150 /* : nullable Bool */;
4143 val* var151 /* : nullable Bool */;
4144 val* var152 /* : String */;
4145 val* var153 /* : String */;
4146 val* var_parentpath /* var parentpath: String */;
4147 static val* varonce154;
4148 val* var155 /* : String */;
4149 char* var156 /* : CString */;
4150 val* var157 /* : String */;
4151 val* var158 /* : nullable Int */;
4152 val* var159 /* : nullable Int */;
4153 val* var160 /* : nullable Bool */;
4154 val* var161 /* : nullable Bool */;
4155 val* var162 /* : String */;
4156 val* var_stopper /* var stopper: String */;
4157 short int var163 /* : Bool */;
4158 short int var164 /* : Bool */;
4159 val* var165 /* : nullable MGroup */;
4160 short int var166 /* : Bool */;
4161 short int var167 /* : Bool */;
4162 short int var169 /* : Bool */;
4163 short int var170 /* : Bool */;
4164 val* var171 /* : MPackage */;
4165 val* var173 /* : MPackage */;
4166 val* var_mpackage /* var mpackage: MPackage */;
4167 short int var174 /* : Bool */;
4168 short int var175 /* : Bool */;
4169 val* var176 /* : ToolContext */;
4170 val* var178 /* : ToolContext */;
4171 val* var180 /* : NativeArray[String] */;
4172 static val* varonce179;
4173 static val* varonce181;
4174 val* var182 /* : String */;
4175 char* var183 /* : CString */;
4176 val* var184 /* : String */;
4177 val* var185 /* : nullable Int */;
4178 val* var186 /* : nullable Int */;
4179 val* var187 /* : nullable Bool */;
4180 val* var188 /* : nullable Bool */;
4181 static val* varonce189;
4182 val* var190 /* : String */;
4183 char* var191 /* : CString */;
4184 val* var192 /* : String */;
4185 val* var193 /* : nullable Int */;
4186 val* var194 /* : nullable Int */;
4187 val* var195 /* : nullable Bool */;
4188 val* var196 /* : nullable Bool */;
4189 static val* varonce197;
4190 val* var198 /* : String */;
4191 char* var199 /* : CString */;
4192 val* var200 /* : String */;
4193 val* var201 /* : nullable Int */;
4194 val* var202 /* : nullable Int */;
4195 val* var203 /* : nullable Bool */;
4196 val* var204 /* : nullable Bool */;
4197 val* var205 /* : String */;
4198 val* var206 /* : String */;
4199 short int var207 /* : Bool */;
4200 short int var208 /* : Bool */;
4201 short int var210 /* : Bool */;
4202 short int var212 /* : Bool */;
4203 val* var213 /* : HashMap[String, nullable MGroup] */;
4204 val* var215 /* : HashMap[String, nullable MGroup] */;
4205 val* var217 /* : NativeArray[String] */;
4206 static val* varonce216;
4207 static val* varonce218;
4208 val* var219 /* : String */;
4209 char* var220 /* : CString */;
4210 val* var221 /* : String */;
4211 val* var222 /* : nullable Int */;
4212 val* var223 /* : nullable Int */;
4213 val* var224 /* : nullable Bool */;
4214 val* var225 /* : nullable Bool */;
4215 static val* varonce226;
4216 val* var227 /* : String */;
4217 char* var228 /* : CString */;
4218 val* var229 /* : String */;
4219 val* var230 /* : nullable Int */;
4220 val* var231 /* : nullable Int */;
4221 val* var232 /* : nullable Bool */;
4222 val* var233 /* : nullable Bool */;
4223 val* var234 /* : String */;
4224 val* var236 /* : Location */;
4225 val* var_loc /* var loc: Location */;
4226 short int var237 /* : Bool */;
4227 short int var238 /* : Bool */;
4228 short int var240 /* : Bool */;
4229 short int var242 /* : Bool */;
4230 short int var243 /* : Bool */;
4231 short int var244 /* : Bool */;
4232 short int var246 /* : Bool */;
4233 short int var247 /* : Bool */;
4234 val* var248 /* : String */;
4235 static val* varonce249;
4236 val* var250 /* : String */;
4237 char* var251 /* : CString */;
4238 val* var252 /* : String */;
4239 val* var253 /* : nullable Int */;
4240 val* var254 /* : nullable Int */;
4241 val* var255 /* : nullable Bool */;
4242 val* var256 /* : nullable Bool */;
4243 val* var257 /* : nullable String */;
4244 val* var258 /* : MPackage */;
4245 val* var259 /* : Model */;
4246 val* var261 /* : Model */;
4247 val* var_mpackage262 /* var mpackage: MPackage */;
4248 val* var263 /* : MGroup */;
4249 val* var_mgroup /* var mgroup: nullable Object */;
4250 val* var265 /* : ToolContext */;
4251 val* var267 /* : ToolContext */;
4252 val* var269 /* : NativeArray[String] */;
4253 static val* varonce268;
4254 static val* varonce270;
4255 val* var271 /* : String */;
4256 char* var272 /* : CString */;
4257 val* var273 /* : String */;
4258 val* var274 /* : nullable Int */;
4259 val* var275 /* : nullable Int */;
4260 val* var276 /* : nullable Bool */;
4261 val* var277 /* : nullable Bool */;
4262 static val* varonce278;
4263 val* var279 /* : String */;
4264 char* var280 /* : CString */;
4265 val* var281 /* : String */;
4266 val* var282 /* : nullable Int */;
4267 val* var283 /* : nullable Int */;
4268 val* var284 /* : nullable Bool */;
4269 val* var285 /* : nullable Bool */;
4270 val* var286 /* : String */;
4271 val* var287 /* : String */;
4272 val* var289 /* : MGroup */;
4273 val* var290 /* : MPackage */;
4274 val* var292 /* : MPackage */;
4275 val* var293 /* : ToolContext */;
4276 val* var295 /* : ToolContext */;
4277 val* var297 /* : NativeArray[String] */;
4278 static val* varonce296;
4279 static val* varonce298;
4280 val* var299 /* : String */;
4281 char* var300 /* : CString */;
4282 val* var301 /* : String */;
4283 val* var302 /* : nullable Int */;
4284 val* var303 /* : nullable Int */;
4285 val* var304 /* : nullable Bool */;
4286 val* var305 /* : nullable Bool */;
4287 static val* varonce306;
4288 val* var307 /* : String */;
4289 char* var308 /* : CString */;
4290 val* var309 /* : String */;
4291 val* var310 /* : nullable Int */;
4292 val* var311 /* : nullable Int */;
4293 val* var312 /* : nullable Bool */;
4294 val* var313 /* : nullable Bool */;
4295 val* var314 /* : String */;
4296 val* var315 /* : String */;
4297 static val* varonce316;
4298 val* var317 /* : String */;
4299 char* var318 /* : CString */;
4300 val* var319 /* : String */;
4301 val* var320 /* : nullable Int */;
4302 val* var321 /* : nullable Int */;
4303 val* var322 /* : nullable Bool */;
4304 val* var323 /* : nullable Bool */;
4305 val* var324 /* : String */;
4306 val* var_readme /* var readme: String */;
4307 short int var325 /* : Bool */;
4308 short int var326 /* : Bool */;
4309 static val* varonce327;
4310 val* var328 /* : String */;
4311 char* var329 /* : CString */;
4312 val* var330 /* : String */;
4313 val* var331 /* : nullable Int */;
4314 val* var332 /* : nullable Int */;
4315 val* var333 /* : nullable Bool */;
4316 val* var334 /* : nullable Bool */;
4317 val* var335 /* : String */;
4318 short int var336 /* : Bool */;
4319 val* var337 /* : MDoc */;
4320 val* var_mdoc /* var mdoc: MDoc */;
4321 val* var340 /* : HashMap[String, nullable MGroup] */;
4322 val* var342 /* : HashMap[String, nullable MGroup] */;
4323 var_dirpath = p0;
4324 {
4325 { /* Inline loader$ModelBuilder$last_loader_error= (self,((val*)NULL)) on <self:ModelBuilder> */
4326 self->attrs[COLOR_nitc__loader__ModelBuilder___last_loader_error].val = ((val*)NULL); /* _last_loader_error on <self:ModelBuilder> */
4327 RET_LABEL1:(void)0;
4328 }
4329 }
4330 {
4331 var2 = core__file___String___file_stat(var_dirpath);
4332 }
4333 var_stat = var2;
4334 if (var_stat == NULL) {
4335 var4 = 1; /* is null */
4336 } else {
4337 var4 = 0; /* arg is null but recv is not */
4338 }
4339 if (0) {
4340 { /* Inline kernel$Object$== (var_stat,((val*)NULL)) on <var_stat:nullable FileStat> */
4341 var_other = ((val*)NULL);
4342 {
4343 { /* Inline kernel$Object$is_same_instance (var_stat,var_other) on <var_stat:nullable FileStat(FileStat)> */
4344 var9 = var_stat == var_other;
4345 var7 = var9;
4346 goto RET_LABEL8;
4347 RET_LABEL8:(void)0;
4348 }
4349 }
4350 var5 = var7;
4351 goto RET_LABEL6;
4352 RET_LABEL6:(void)0;
4353 }
4354 var4 = var5;
4355 }
4356 var_ = var4;
4357 if (var4){
4358 var3 = var_;
4359 } else {
4360 {
4361 var10 = core___core__FileStat___is_dir(var_stat);
4362 }
4363 var11 = !var10;
4364 var3 = var11;
4365 }
4366 if (var3){
4367 {
4368 var12 = ((val*(*)(val* self))(var_dirpath->class->vft[COLOR_core__abstract_text__Text__chars]))(var_dirpath); /* chars on <var_dirpath:String>*/
4369 }
4370 {
4371 var13 = (val*)((long)('/')<<2|2);
4372 var14 = ((short int(*)(val* self, val* p0))((((long)var12&3)?class_info[((long)var12&3)]:var12->class)->vft[COLOR_core__abstract_collection__Collection__has]))(var12, var13); /* has on <var12:SequenceRead[Char]>*/
4373 }
4374 if (var14){
4375 var = ((val*)NULL);
4376 goto RET_LABEL;
4377 } else {
4378 }
4379 {
4380 { /* Inline loader$ModelBuilder$paths (self) on <self:ModelBuilder> */
4381 var17 = self->attrs[COLOR_nitc__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
4382 if (unlikely(var17 == NULL)) {
4383 if(catchStack.cursor >= 0){
4384 longjmp(catchStack.envs[catchStack.cursor], 1);
4385 }
4386 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
4387 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 213);
4388 fatal_exit(1);
4389 }
4390 var15 = var17;
4391 RET_LABEL16:(void)0;
4392 }
4393 }
4394 var_18 = var15;
4395 {
4396 var19 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_18);
4397 }
4398 var_20 = var19;
4399 for(;;) {
4400 {
4401 var21 = ((short int(*)(val* self))((((long)var_20&3)?class_info[((long)var_20&3)]:var_20->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_20); /* is_ok on <var_20:IndexedIterator[String]>*/
4402 }
4403 if (var21){
4404 } else {
4405 goto BREAK_label;
4406 }
4407 {
4408 var22 = ((val*(*)(val* self))((((long)var_20&3)?class_info[((long)var_20&3)]:var_20->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_20); /* item on <var_20:IndexedIterator[String]>*/
4409 }
4410 var_p = var22;
4411 {
4412 var23 = core__file___String____47d(var_p, var_dirpath);
4413 }
4414 var_try = var23;
4415 {
4416 var24 = core__file___String___file_stat(var_try);
4417 }
4418 var_stat = var24;
4419 if (var_stat == NULL) {
4420 var25 = 0; /* is null */
4421 } else {
4422 var25 = 1; /* arg is null and recv is not */
4423 }
4424 if (0) {
4425 { /* Inline kernel$Object$!= (var_stat,((val*)NULL)) on <var_stat:nullable FileStat> */
4426 var_other28 = ((val*)NULL);
4427 {
4428 var29 = ((short int(*)(val* self, val* p0))(var_stat->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_stat, var_other28); /* == on <var_stat:nullable FileStat(FileStat)>*/
4429 }
4430 var30 = !var29;
4431 var26 = var30;
4432 goto RET_LABEL27;
4433 RET_LABEL27:(void)0;
4434 }
4435 var25 = var26;
4436 }
4437 if (var25){
4438 var_dirpath = var_try;
4439 goto BREAK_;
4440 } else {
4441 }
4442 {
4443 ((void(*)(val* self))((((long)var_20&3)?class_info[((long)var_20&3)]:var_20->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_20); /* next on <var_20:IndexedIterator[String]>*/
4444 }
4445 }
4446 BREAK_label: (void)0;
4447 {
4448 ((void(*)(val* self))((((long)var_20&3)?class_info[((long)var_20&3)]:var_20->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_20); /* finish on <var_20:IndexedIterator[String]>*/
4449 }
4450 var = ((val*)NULL);
4451 goto RET_LABEL;
4452 BREAK_: (void)0;
4453 } else {
4454 }
4455 {
4456 var31 = core___core__FileStat___is_dir(var_stat);
4457 }
4458 var32 = !var31;
4459 if (var32){
4460 if (unlikely(varonce==NULL)) {
4461 var33 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4462 if (likely(varonce34!=NULL)) {
4463 var35 = varonce34;
4464 } else {
4465 var36 = "Error: `";
4466 var38 = (val*)(8l<<2|1);
4467 var39 = (val*)(8l<<2|1);
4468 var40 = (val*)((long)(0)<<2|3);
4469 var41 = (val*)((long)(0)<<2|3);
4470 var37 = core__flat___CString___to_s_unsafe(var36, var38, var39, var40, var41);
4471 var35 = var37;
4472 varonce34 = var35;
4473 }
4474 ((struct instance_core__NativeArray*)var33)->values[0]=var35;
4475 if (likely(varonce42!=NULL)) {
4476 var43 = varonce42;
4477 } else {
4478 var44 = "` is not a directory.";
4479 var46 = (val*)(21l<<2|1);
4480 var47 = (val*)(21l<<2|1);
4481 var48 = (val*)((long)(0)<<2|3);
4482 var49 = (val*)((long)(0)<<2|3);
4483 var45 = core__flat___CString___to_s_unsafe(var44, var46, var47, var48, var49);
4484 var43 = var45;
4485 varonce42 = var43;
4486 }
4487 ((struct instance_core__NativeArray*)var33)->values[2]=var43;
4488 } else {
4489 var33 = varonce;
4490 varonce = NULL;
4491 }
4492 ((struct instance_core__NativeArray*)var33)->values[1]=var_dirpath;
4493 {
4494 var50 = ((val*(*)(val* self))(var33->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var33); /* native_to_s on <var33:NativeArray[String]>*/
4495 }
4496 varonce = var33;
4497 {
4498 { /* Inline loader$ModelBuilder$last_loader_error= (self,var50) on <self:ModelBuilder> */
4499 self->attrs[COLOR_nitc__loader__ModelBuilder___last_loader_error].val = var50; /* _last_loader_error on <self:ModelBuilder> */
4500 RET_LABEL51:(void)0;
4501 }
4502 }
4503 var = ((val*)NULL);
4504 goto RET_LABEL;
4505 } else {
4506 }
4507 {
4508 var52 = nitc__loader___ModelBuilder___module_absolute_path(self, var_dirpath);
4509 }
4510 var_rdp = var52;
4511 {
4512 { /* Inline loader$ModelBuilder$mgroups (self) on <self:ModelBuilder> */
4513 var55 = self->attrs[COLOR_nitc__loader__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
4514 if (unlikely(var55 == NULL)) {
4515 if(catchStack.cursor >= 0){
4516 longjmp(catchStack.envs[catchStack.cursor], 1);
4517 }
4518 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
4519 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 477);
4520 fatal_exit(1);
4521 }
4522 var53 = var55;
4523 RET_LABEL54:(void)0;
4524 }
4525 }
4526 {
4527 var56 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var53, var_rdp);
4528 }
4529 if (var56){
4530 {
4531 { /* Inline loader$ModelBuilder$mgroups (self) on <self:ModelBuilder> */
4532 var59 = self->attrs[COLOR_nitc__loader__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
4533 if (unlikely(var59 == NULL)) {
4534 if(catchStack.cursor >= 0){
4535 longjmp(catchStack.envs[catchStack.cursor], 1);
4536 }
4537 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
4538 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 477);
4539 fatal_exit(1);
4540 }
4541 var57 = var59;
4542 RET_LABEL58:(void)0;
4543 }
4544 }
4545 {
4546 var60 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var57, var_rdp);
4547 }
4548 var = var60;
4549 goto RET_LABEL;
4550 } else {
4551 }
4552 {
4553 var61 = ((val*(*)(val* self, val* p0))(var_rdp->class->vft[COLOR_core__file__String__basename]))(var_rdp, ((val*)NULL)); /* basename on <var_rdp:String>*/
4554 }
4555 var_pn = var61;
4556 var_ini = ((val*)NULL);
4557 var_parent = ((val*)NULL);
4558 if (likely(varonce62!=NULL)) {
4559 var63 = varonce62;
4560 } else {
4561 var64 = "package.ini";
4562 var66 = (val*)(11l<<2|1);
4563 var67 = (val*)(11l<<2|1);
4564 var68 = (val*)((long)(0)<<2|3);
4565 var69 = (val*)((long)(0)<<2|3);
4566 var65 = core__flat___CString___to_s_unsafe(var64, var66, var67, var68, var69);
4567 var63 = var65;
4568 varonce62 = var63;
4569 }
4570 {
4571 var70 = core__file___String____47d(var_dirpath, var63);
4572 }
4573 var_inipath = var70;
4574 {
4575 var71 = core__file___Text___file_exists(var_inipath);
4576 }
4577 if (var71){
4578 var72 = NEW_ini__ConfigTree(&type_ini__ConfigTree);
4579 {
4580 ((void(*)(val* self, val* p0))(var72->class->vft[COLOR_ini__ConfigTree__ini_file_61d]))(var72, var_inipath); /* ini_file= on <var72:ConfigTree>*/
4581 }
4582 {
4583 ((void(*)(val* self))(var72->class->vft[COLOR_core__kernel__Object__init]))(var72); /* init on <var72:ConfigTree>*/
4584 }
4585 var_ini = var72;
4586 } else {
4587 }
4588 if (var_ini == NULL) {
4589 var73 = 1; /* is null */
4590 } else {
4591 var73 = 0; /* arg is null but recv is not */
4592 }
4593 if (0) {
4594 { /* Inline kernel$Object$== (var_ini,((val*)NULL)) on <var_ini:nullable Object(nullable ConfigTree)> */
4595 var_other = ((val*)NULL);
4596 {
4597 { /* Inline kernel$Object$is_same_instance (var_ini,var_other) on <var_ini:nullable Object(ConfigTree)> */
4598 var78 = var_ini == var_other;
4599 var76 = var78;
4600 goto RET_LABEL77;
4601 RET_LABEL77:(void)0;
4602 }
4603 }
4604 var74 = var76;
4605 goto RET_LABEL75;
4606 RET_LABEL75:(void)0;
4607 }
4608 var73 = var74;
4609 }
4610 if (var73){
4611 if (likely(varonce79!=NULL)) {
4612 var80 = varonce79;
4613 } else {
4614 var81 = "/";
4615 var83 = (val*)(1l<<2|1);
4616 var84 = (val*)(1l<<2|1);
4617 var85 = (val*)((long)(0)<<2|3);
4618 var86 = (val*)((long)(0)<<2|3);
4619 var82 = core__flat___CString___to_s_unsafe(var81, var83, var84, var85, var86);
4620 var80 = var82;
4621 varonce79 = var80;
4622 }
4623 {
4624 var87 = ((short int(*)(val* self, val* p0))(var_rdp->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_rdp, var80); /* == on <var_rdp:String>*/
4625 }
4626 if (var87){
4627 {
4628 { /* Inline loader$ModelBuilder$mgroups (self) on <self:ModelBuilder> */
4629 var90 = self->attrs[COLOR_nitc__loader__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
4630 if (unlikely(var90 == NULL)) {
4631 if(catchStack.cursor >= 0){
4632 longjmp(catchStack.envs[catchStack.cursor], 1);
4633 }
4634 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
4635 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 477);
4636 fatal_exit(1);
4637 }
4638 var88 = var90;
4639 RET_LABEL89:(void)0;
4640 }
4641 }
4642 {
4643 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var88, var_rdp, ((val*)NULL)); /* Direct call hash_collection$HashMap$[]= on <var88:HashMap[String, nullable MGroup]>*/
4644 }
4645 if (unlikely(varonce91==NULL)) {
4646 var92 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4647 if (likely(varonce93!=NULL)) {
4648 var94 = varonce93;
4649 } else {
4650 var95 = "Error: `";
4651 var97 = (val*)(8l<<2|1);
4652 var98 = (val*)(8l<<2|1);
4653 var99 = (val*)((long)(0)<<2|3);
4654 var100 = (val*)((long)(0)<<2|3);
4655 var96 = core__flat___CString___to_s_unsafe(var95, var97, var98, var99, var100);
4656 var94 = var96;
4657 varonce93 = var94;
4658 }
4659 ((struct instance_core__NativeArray*)var92)->values[0]=var94;
4660 if (likely(varonce101!=NULL)) {
4661 var102 = varonce101;
4662 } else {
4663 var103 = "` is not a Nit package.";
4664 var105 = (val*)(23l<<2|1);
4665 var106 = (val*)(23l<<2|1);
4666 var107 = (val*)((long)(0)<<2|3);
4667 var108 = (val*)((long)(0)<<2|3);
4668 var104 = core__flat___CString___to_s_unsafe(var103, var105, var106, var107, var108);
4669 var102 = var104;
4670 varonce101 = var102;
4671 }
4672 ((struct instance_core__NativeArray*)var92)->values[2]=var102;
4673 } else {
4674 var92 = varonce91;
4675 varonce91 = NULL;
4676 }
4677 ((struct instance_core__NativeArray*)var92)->values[1]=var_dirpath;
4678 {
4679 var109 = ((val*(*)(val* self))(var92->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var92); /* native_to_s on <var92:NativeArray[String]>*/
4680 }
4681 varonce91 = var92;
4682 {
4683 { /* Inline loader$ModelBuilder$last_loader_error= (self,var109) on <self:ModelBuilder> */
4684 self->attrs[COLOR_nitc__loader__ModelBuilder___last_loader_error].val = var109; /* _last_loader_error on <self:ModelBuilder> */
4685 RET_LABEL110:(void)0;
4686 }
4687 }
4688 var = ((val*)NULL);
4689 goto RET_LABEL;
4690 } else {
4691 }
4692 if (likely(varonce111!=NULL)) {
4693 var112 = varonce111;
4694 } else {
4695 var113 = "packages.ini";
4696 var115 = (val*)(12l<<2|1);
4697 var116 = (val*)(12l<<2|1);
4698 var117 = (val*)((long)(0)<<2|3);
4699 var118 = (val*)((long)(0)<<2|3);
4700 var114 = core__flat___CString___to_s_unsafe(var113, var115, var116, var117, var118);
4701 var112 = var114;
4702 varonce111 = var112;
4703 }
4704 {
4705 var119 = core__file___String____47d(var_dirpath, var112);
4706 }
4707 {
4708 var120 = core__file___Text___file_exists(var119);
4709 }
4710 if (var120){
4711 {
4712 { /* Inline loader$ModelBuilder$mgroups (self) on <self:ModelBuilder> */
4713 var123 = self->attrs[COLOR_nitc__loader__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
4714 if (unlikely(var123 == NULL)) {
4715 if(catchStack.cursor >= 0){
4716 longjmp(catchStack.envs[catchStack.cursor], 1);
4717 }
4718 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
4719 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 477);
4720 fatal_exit(1);
4721 }
4722 var121 = var123;
4723 RET_LABEL122:(void)0;
4724 }
4725 }
4726 {
4727 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var121, var_rdp, ((val*)NULL)); /* Direct call hash_collection$HashMap$[]= on <var121:HashMap[String, nullable MGroup]>*/
4728 }
4729 if (unlikely(varonce124==NULL)) {
4730 var125 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4731 if (likely(varonce126!=NULL)) {
4732 var127 = varonce126;
4733 } else {
4734 var128 = "Error: `";
4735 var130 = (val*)(8l<<2|1);
4736 var131 = (val*)(8l<<2|1);
4737 var132 = (val*)((long)(0)<<2|3);
4738 var133 = (val*)((long)(0)<<2|3);
4739 var129 = core__flat___CString___to_s_unsafe(var128, var130, var131, var132, var133);
4740 var127 = var129;
4741 varonce126 = var127;
4742 }
4743 ((struct instance_core__NativeArray*)var125)->values[0]=var127;
4744 if (likely(varonce134!=NULL)) {
4745 var135 = varonce134;
4746 } else {
4747 var136 = "` is not a Nit package.";
4748 var138 = (val*)(23l<<2|1);
4749 var139 = (val*)(23l<<2|1);
4750 var140 = (val*)((long)(0)<<2|3);
4751 var141 = (val*)((long)(0)<<2|3);
4752 var137 = core__flat___CString___to_s_unsafe(var136, var138, var139, var140, var141);
4753 var135 = var137;
4754 varonce134 = var135;
4755 }
4756 ((struct instance_core__NativeArray*)var125)->values[2]=var135;
4757 } else {
4758 var125 = varonce124;
4759 varonce124 = NULL;
4760 }
4761 ((struct instance_core__NativeArray*)var125)->values[1]=var_dirpath;
4762 {
4763 var142 = ((val*(*)(val* self))(var125->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var125); /* native_to_s on <var125:NativeArray[String]>*/
4764 }
4765 varonce124 = var125;
4766 {
4767 { /* Inline loader$ModelBuilder$last_loader_error= (self,var142) on <self:ModelBuilder> */
4768 self->attrs[COLOR_nitc__loader__ModelBuilder___last_loader_error].val = var142; /* _last_loader_error on <self:ModelBuilder> */
4769 RET_LABEL143:(void)0;
4770 }
4771 }
4772 var = ((val*)NULL);
4773 goto RET_LABEL;
4774 } else {
4775 }
4776 if (likely(varonce144!=NULL)) {
4777 var145 = varonce144;
4778 } else {
4779 var146 = "..";
4780 var148 = (val*)(2l<<2|1);
4781 var149 = (val*)(2l<<2|1);
4782 var150 = (val*)((long)(0)<<2|3);
4783 var151 = (val*)((long)(0)<<2|3);
4784 var147 = core__flat___CString___to_s_unsafe(var146, var148, var149, var150, var151);
4785 var145 = var147;
4786 varonce144 = var145;
4787 }
4788 {
4789 var152 = core__file___String___join_path(var_dirpath, var145);
4790 }
4791 {
4792 var153 = core__file___String___simplify_path(var152);
4793 }
4794 var_parentpath = var153;
4795 if (likely(varonce154!=NULL)) {
4796 var155 = varonce154;
4797 } else {
4798 var156 = "packages.ini";
4799 var158 = (val*)(12l<<2|1);
4800 var159 = (val*)(12l<<2|1);
4801 var160 = (val*)((long)(0)<<2|3);
4802 var161 = (val*)((long)(0)<<2|3);
4803 var157 = core__flat___CString___to_s_unsafe(var156, var158, var159, var160, var161);
4804 var155 = var157;
4805 varonce154 = var155;
4806 }
4807 {
4808 var162 = core__file___String____47d(var_parentpath, var155);
4809 }
4810 var_stopper = var162;
4811 {
4812 var163 = core__file___Text___file_exists(var_stopper);
4813 }
4814 var164 = !var163;
4815 if (var164){
4816 {
4817 var165 = nitc__loader___ModelBuilder___identify_group(self, var_parentpath);
4818 }
4819 var_parent = var165;
4820 if (var_parent == NULL) {
4821 var166 = 0; /* is null */
4822 } else {
4823 var166 = 1; /* arg is null and recv is not */
4824 }
4825 if (0) {
4826 { /* Inline kernel$Object$!= (var_parent,((val*)NULL)) on <var_parent:nullable Object(nullable MGroup)> */
4827 var_other28 = ((val*)NULL);
4828 {
4829 var169 = ((short int(*)(val* self, val* p0))(var_parent->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_parent, var_other28); /* == on <var_parent:nullable Object(MGroup)>*/
4830 }
4831 var170 = !var169;
4832 var167 = var170;
4833 goto RET_LABEL168;
4834 RET_LABEL168:(void)0;
4835 }
4836 var166 = var167;
4837 }
4838 if (var166){
4839 {
4840 { /* Inline mpackage$MGroup$mpackage (var_parent) on <var_parent:nullable Object(MGroup)> */
4841 var173 = var_parent->attrs[COLOR_nitc__mpackage__MGroup___mpackage].val; /* _mpackage on <var_parent:nullable Object(MGroup)> */
4842 if (unlikely(var173 == NULL)) {
4843 if(catchStack.cursor >= 0){
4844 longjmp(catchStack.envs[catchStack.cursor], 1);
4845 }
4846 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpackage");
4847 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 76);
4848 fatal_exit(1);
4849 }
4850 var171 = var173;
4851 RET_LABEL172:(void)0;
4852 }
4853 }
4854 var_mpackage = var171;
4855 {
4856 var174 = nitc__loader___MPackage___accept(var_mpackage, var_dirpath);
4857 }
4858 var175 = !var174;
4859 if (var175){
4860 {
4861 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
4862 var178 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
4863 if (unlikely(var178 == NULL)) {
4864 if(catchStack.cursor >= 0){
4865 longjmp(catchStack.envs[catchStack.cursor], 1);
4866 }
4867 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4868 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
4869 fatal_exit(1);
4870 }
4871 var176 = var178;
4872 RET_LABEL177:(void)0;
4873 }
4874 }
4875 if (unlikely(varonce179==NULL)) {
4876 var180 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
4877 if (likely(varonce181!=NULL)) {
4878 var182 = varonce181;
4879 } else {
4880 var183 = "directory `";
4881 var185 = (val*)(11l<<2|1);
4882 var186 = (val*)(11l<<2|1);
4883 var187 = (val*)((long)(0)<<2|3);
4884 var188 = (val*)((long)(0)<<2|3);
4885 var184 = core__flat___CString___to_s_unsafe(var183, var185, var186, var187, var188);
4886 var182 = var184;
4887 varonce181 = var182;
4888 }
4889 ((struct instance_core__NativeArray*)var180)->values[0]=var182;
4890 if (likely(varonce189!=NULL)) {
4891 var190 = varonce189;
4892 } else {
4893 var191 = "` excluded from package `";
4894 var193 = (val*)(25l<<2|1);
4895 var194 = (val*)(25l<<2|1);
4896 var195 = (val*)((long)(0)<<2|3);
4897 var196 = (val*)((long)(0)<<2|3);
4898 var192 = core__flat___CString___to_s_unsafe(var191, var193, var194, var195, var196);
4899 var190 = var192;
4900 varonce189 = var190;
4901 }
4902 ((struct instance_core__NativeArray*)var180)->values[2]=var190;
4903 if (likely(varonce197!=NULL)) {
4904 var198 = varonce197;
4905 } else {
4906 var199 = "`";
4907 var201 = (val*)(1l<<2|1);
4908 var202 = (val*)(1l<<2|1);
4909 var203 = (val*)((long)(0)<<2|3);
4910 var204 = (val*)((long)(0)<<2|3);
4911 var200 = core__flat___CString___to_s_unsafe(var199, var201, var202, var203, var204);
4912 var198 = var200;
4913 varonce197 = var198;
4914 }
4915 ((struct instance_core__NativeArray*)var180)->values[4]=var198;
4916 } else {
4917 var180 = varonce179;
4918 varonce179 = NULL;
4919 }
4920 ((struct instance_core__NativeArray*)var180)->values[1]=var_dirpath;
4921 {
4922 var205 = ((val*(*)(val* self))(var_mpackage->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mpackage); /* to_s on <var_mpackage:MPackage>*/
4923 }
4924 ((struct instance_core__NativeArray*)var180)->values[3]=var205;
4925 {
4926 var206 = ((val*(*)(val* self))(var180->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var180); /* native_to_s on <var180:NativeArray[String]>*/
4927 }
4928 varonce179 = var180;
4929 {
4930 nitc___nitc__ToolContext___info(var176, var206, 2l); /* Direct call toolcontext$ToolContext$info on <var176:ToolContext>*/
4931 }
4932 var_parent = ((val*)NULL);
4933 } else {
4934 }
4935 } else {
4936 }
4937 if (var_parent == NULL) {
4938 var207 = 1; /* is null */
4939 } else {
4940 var207 = 0; /* arg is null but recv is not */
4941 }
4942 if (0) {
4943 { /* Inline kernel$Object$== (var_parent,((val*)NULL)) on <var_parent:nullable Object(nullable MGroup)> */
4944 var_other = ((val*)NULL);
4945 {
4946 { /* Inline kernel$Object$is_same_instance (var_parent,var_other) on <var_parent:nullable Object(MGroup)> */
4947 var212 = var_parent == var_other;
4948 var210 = var212;
4949 goto RET_LABEL211;
4950 RET_LABEL211:(void)0;
4951 }
4952 }
4953 var208 = var210;
4954 goto RET_LABEL209;
4955 RET_LABEL209:(void)0;
4956 }
4957 var207 = var208;
4958 }
4959 if (var207){
4960 {
4961 { /* Inline loader$ModelBuilder$mgroups (self) on <self:ModelBuilder> */
4962 var215 = self->attrs[COLOR_nitc__loader__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
4963 if (unlikely(var215 == NULL)) {
4964 if(catchStack.cursor >= 0){
4965 longjmp(catchStack.envs[catchStack.cursor], 1);
4966 }
4967 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
4968 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 477);
4969 fatal_exit(1);
4970 }
4971 var213 = var215;
4972 RET_LABEL214:(void)0;
4973 }
4974 }
4975 {
4976 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var213, var_rdp, ((val*)NULL)); /* Direct call hash_collection$HashMap$[]= on <var213:HashMap[String, nullable MGroup]>*/
4977 }
4978 if (unlikely(varonce216==NULL)) {
4979 var217 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4980 if (likely(varonce218!=NULL)) {
4981 var219 = varonce218;
4982 } else {
4983 var220 = "Error: `";
4984 var222 = (val*)(8l<<2|1);
4985 var223 = (val*)(8l<<2|1);
4986 var224 = (val*)((long)(0)<<2|3);
4987 var225 = (val*)((long)(0)<<2|3);
4988 var221 = core__flat___CString___to_s_unsafe(var220, var222, var223, var224, var225);
4989 var219 = var221;
4990 varonce218 = var219;
4991 }
4992 ((struct instance_core__NativeArray*)var217)->values[0]=var219;
4993 if (likely(varonce226!=NULL)) {
4994 var227 = varonce226;
4995 } else {
4996 var228 = "` is not a Nit package.";
4997 var230 = (val*)(23l<<2|1);
4998 var231 = (val*)(23l<<2|1);
4999 var232 = (val*)((long)(0)<<2|3);
5000 var233 = (val*)((long)(0)<<2|3);
5001 var229 = core__flat___CString___to_s_unsafe(var228, var230, var231, var232, var233);
5002 var227 = var229;
5003 varonce226 = var227;
5004 }
5005 ((struct instance_core__NativeArray*)var217)->values[2]=var227;
5006 } else {
5007 var217 = varonce216;
5008 varonce216 = NULL;
5009 }
5010 ((struct instance_core__NativeArray*)var217)->values[1]=var_dirpath;
5011 {
5012 var234 = ((val*(*)(val* self))(var217->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var217); /* native_to_s on <var217:NativeArray[String]>*/
5013 }
5014 varonce216 = var217;
5015 {
5016 { /* Inline loader$ModelBuilder$last_loader_error= (self,var234) on <self:ModelBuilder> */
5017 self->attrs[COLOR_nitc__loader__ModelBuilder___last_loader_error].val = var234; /* _last_loader_error on <self:ModelBuilder> */
5018 RET_LABEL235:(void)0;
5019 }
5020 }
5021 var = ((val*)NULL);
5022 goto RET_LABEL;
5023 } else {
5024 }
5025 } else {
5026 }
5027 } else {
5028 }
5029 var236 = NEW_nitc__Location(&type_nitc__Location);
5030 {
5031 nitc___nitc__Location___opaque_file(var236, var_dirpath); /* Direct call location$Location$opaque_file on <var236:Location>*/
5032 }
5033 var_loc = var236;
5034 if (var_parent == NULL) {
5035 var237 = 1; /* is null */
5036 } else {
5037 var237 = 0; /* arg is null but recv is not */
5038 }
5039 if (0) {
5040 { /* Inline kernel$Object$== (var_parent,((val*)NULL)) on <var_parent:nullable Object(nullable MGroup)> */
5041 var_other = ((val*)NULL);
5042 {
5043 { /* Inline kernel$Object$is_same_instance (var_parent,var_other) on <var_parent:nullable Object(MGroup)> */
5044 var242 = var_parent == var_other;
5045 var240 = var242;
5046 goto RET_LABEL241;
5047 RET_LABEL241:(void)0;
5048 }
5049 }
5050 var238 = var240;
5051 goto RET_LABEL239;
5052 RET_LABEL239:(void)0;
5053 }
5054 var237 = var238;
5055 }
5056 if (var237){
5057 if (var_ini == NULL) {
5058 var243 = 0; /* is null */
5059 } else {
5060 var243 = 1; /* arg is null and recv is not */
5061 }
5062 if (0) {
5063 { /* Inline kernel$Object$!= (var_ini,((val*)NULL)) on <var_ini:nullable Object(nullable ConfigTree)> */
5064 var_other28 = ((val*)NULL);
5065 {
5066 var246 = ((short int(*)(val* self, val* p0))(var_ini->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_ini, var_other28); /* == on <var_ini:nullable Object(ConfigTree)>*/
5067 }
5068 var247 = !var246;
5069 var244 = var247;
5070 goto RET_LABEL245;
5071 RET_LABEL245:(void)0;
5072 }
5073 var243 = var244;
5074 }
5075 if (var243){
5076 if (likely(varonce249!=NULL)) {
5077 var250 = varonce249;
5078 } else {
5079 var251 = "package.name";
5080 var253 = (val*)(12l<<2|1);
5081 var254 = (val*)(12l<<2|1);
5082 var255 = (val*)((long)(0)<<2|3);
5083 var256 = (val*)((long)(0)<<2|3);
5084 var252 = core__flat___CString___to_s_unsafe(var251, var253, var254, var255, var256);
5085 var250 = var252;
5086 varonce249 = var250;
5087 }
5088 {
5089 var257 = ini___ini__ConfigTree____91d_93d(var_ini, var250);
5090 }
5091 if (var257!=NULL) {
5092 var248 = var257;
5093 } else {
5094 var248 = var_pn;
5095 }
5096 var_pn = var248;
5097 } else {
5098 }
5099 var258 = NEW_nitc__MPackage(&type_nitc__MPackage);
5100 {
5101 { /* Inline modelbuilder_base$ModelBuilder$model (self) on <self:ModelBuilder> */
5102 var261 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
5103 if (unlikely(var261 == NULL)) {
5104 if(catchStack.cursor >= 0){
5105 longjmp(catchStack.envs[catchStack.cursor], 1);
5106 }
5107 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
5108 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 44);
5109 fatal_exit(1);
5110 }
5111 var259 = var261;
5112 RET_LABEL260:(void)0;
5113 }
5114 }
5115 {
5116 ((void(*)(val* self, val* p0))(var258->class->vft[COLOR_nitc__mpackage__MPackage__name_61d]))(var258, var_pn); /* name= on <var258:MPackage>*/
5117 }
5118 {
5119 ((void(*)(val* self, val* p0))(var258->class->vft[COLOR_nitc__mpackage__MPackage__model_61d]))(var258, var259); /* model= on <var258:MPackage>*/
5120 }
5121 {
5122 ((void(*)(val* self, val* p0))(var258->class->vft[COLOR_nitc__mpackage__MPackage__location_61d]))(var258, var_loc); /* location= on <var258:MPackage>*/
5123 }
5124 {
5125 ((void(*)(val* self))(var258->class->vft[COLOR_core__kernel__Object__init]))(var258); /* init on <var258:MPackage>*/
5126 }
5127 var_mpackage262 = var258;
5128 var263 = NEW_nitc__MGroup(&type_nitc__MGroup);
5129 {
5130 ((void(*)(val* self, val* p0))(var263->class->vft[COLOR_nitc__mpackage__MGroup__name_61d]))(var263, var_pn); /* name= on <var263:MGroup>*/
5131 }
5132 {
5133 ((void(*)(val* self, val* p0))(var263->class->vft[COLOR_nitc__mpackage__MGroup__location_61d]))(var263, var_loc); /* location= on <var263:MGroup>*/
5134 }
5135 {
5136 ((void(*)(val* self, val* p0))(var263->class->vft[COLOR_nitc__mpackage__MGroup__mpackage_61d]))(var263, var_mpackage262); /* mpackage= on <var263:MGroup>*/
5137 }
5138 {
5139 ((void(*)(val* self, val* p0))(var263->class->vft[COLOR_nitc__mpackage__MGroup__parent_61d]))(var263, ((val*)NULL)); /* parent= on <var263:MGroup>*/
5140 }
5141 {
5142 ((void(*)(val* self))(var263->class->vft[COLOR_core__kernel__Object__init]))(var263); /* init on <var263:MGroup>*/
5143 }
5144 var_mgroup = var263;
5145 {
5146 { /* Inline mpackage$MPackage$root= (var_mpackage262,var_mgroup) on <var_mpackage262:MPackage> */
5147 var_mpackage262->attrs[COLOR_nitc__mpackage__MPackage___root].val = var_mgroup; /* _root on <var_mpackage262:MPackage> */
5148 RET_LABEL264:(void)0;
5149 }
5150 }
5151 {
5152 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
5153 var267 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
5154 if (unlikely(var267 == NULL)) {
5155 if(catchStack.cursor >= 0){
5156 longjmp(catchStack.envs[catchStack.cursor], 1);
5157 }
5158 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5159 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
5160 fatal_exit(1);
5161 }
5162 var265 = var267;
5163 RET_LABEL266:(void)0;
5164 }
5165 }
5166 if (unlikely(varonce268==NULL)) {
5167 var269 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
5168 if (likely(varonce270!=NULL)) {
5169 var271 = varonce270;
5170 } else {
5171 var272 = "found package `";
5172 var274 = (val*)(15l<<2|1);
5173 var275 = (val*)(15l<<2|1);
5174 var276 = (val*)((long)(0)<<2|3);
5175 var277 = (val*)((long)(0)<<2|3);
5176 var273 = core__flat___CString___to_s_unsafe(var272, var274, var275, var276, var277);
5177 var271 = var273;
5178 varonce270 = var271;
5179 }
5180 ((struct instance_core__NativeArray*)var269)->values[0]=var271;
5181 if (likely(varonce278!=NULL)) {
5182 var279 = varonce278;
5183 } else {
5184 var280 = "` at ";
5185 var282 = (val*)(5l<<2|1);
5186 var283 = (val*)(5l<<2|1);
5187 var284 = (val*)((long)(0)<<2|3);
5188 var285 = (val*)((long)(0)<<2|3);
5189 var281 = core__flat___CString___to_s_unsafe(var280, var282, var283, var284, var285);
5190 var279 = var281;
5191 varonce278 = var279;
5192 }
5193 ((struct instance_core__NativeArray*)var269)->values[2]=var279;
5194 } else {
5195 var269 = varonce268;
5196 varonce268 = NULL;
5197 }
5198 {
5199 var286 = ((val*(*)(val* self))(var_mpackage262->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mpackage262); /* to_s on <var_mpackage262:MPackage>*/
5200 }
5201 ((struct instance_core__NativeArray*)var269)->values[1]=var286;
5202 ((struct instance_core__NativeArray*)var269)->values[3]=var_dirpath;
5203 {
5204 var287 = ((val*(*)(val* self))(var269->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var269); /* native_to_s on <var269:NativeArray[String]>*/
5205 }
5206 varonce268 = var269;
5207 {
5208 nitc___nitc__ToolContext___info(var265, var287, 2l); /* Direct call toolcontext$ToolContext$info on <var265:ToolContext>*/
5209 }
5210 {
5211 { /* Inline loader$MPackage$ini= (var_mpackage262,var_ini) on <var_mpackage262:MPackage> */
5212 var_mpackage262->attrs[COLOR_nitc__loader__MPackage___ini].val = var_ini; /* _ini on <var_mpackage262:MPackage> */
5213 RET_LABEL288:(void)0;
5214 }
5215 }
5216 } else {
5217 var289 = NEW_nitc__MGroup(&type_nitc__MGroup);
5218 {
5219 { /* Inline mpackage$MGroup$mpackage (var_parent) on <var_parent:nullable Object(MGroup)> */
5220 var292 = var_parent->attrs[COLOR_nitc__mpackage__MGroup___mpackage].val; /* _mpackage on <var_parent:nullable Object(MGroup)> */
5221 if (unlikely(var292 == NULL)) {
5222 if(catchStack.cursor >= 0){
5223 longjmp(catchStack.envs[catchStack.cursor], 1);
5224 }
5225 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpackage");
5226 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 76);
5227 fatal_exit(1);
5228 }
5229 var290 = var292;
5230 RET_LABEL291:(void)0;
5231 }
5232 }
5233 {
5234 ((void(*)(val* self, val* p0))(var289->class->vft[COLOR_nitc__mpackage__MGroup__name_61d]))(var289, var_pn); /* name= on <var289:MGroup>*/
5235 }
5236 {
5237 ((void(*)(val* self, val* p0))(var289->class->vft[COLOR_nitc__mpackage__MGroup__location_61d]))(var289, var_loc); /* location= on <var289:MGroup>*/
5238 }
5239 {
5240 ((void(*)(val* self, val* p0))(var289->class->vft[COLOR_nitc__mpackage__MGroup__mpackage_61d]))(var289, var290); /* mpackage= on <var289:MGroup>*/
5241 }
5242 {
5243 ((void(*)(val* self, val* p0))(var289->class->vft[COLOR_nitc__mpackage__MGroup__parent_61d]))(var289, var_parent); /* parent= on <var289:MGroup>*/
5244 }
5245 {
5246 ((void(*)(val* self))(var289->class->vft[COLOR_core__kernel__Object__init]))(var289); /* init on <var289:MGroup>*/
5247 }
5248 var_mgroup = var289;
5249 {
5250 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
5251 var295 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
5252 if (unlikely(var295 == NULL)) {
5253 if(catchStack.cursor >= 0){
5254 longjmp(catchStack.envs[catchStack.cursor], 1);
5255 }
5256 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5257 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
5258 fatal_exit(1);
5259 }
5260 var293 = var295;
5261 RET_LABEL294:(void)0;
5262 }
5263 }
5264 if (unlikely(varonce296==NULL)) {
5265 var297 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
5266 if (likely(varonce298!=NULL)) {
5267 var299 = varonce298;
5268 } else {
5269 var300 = "found sub group `";
5270 var302 = (val*)(17l<<2|1);
5271 var303 = (val*)(17l<<2|1);
5272 var304 = (val*)((long)(0)<<2|3);
5273 var305 = (val*)((long)(0)<<2|3);
5274 var301 = core__flat___CString___to_s_unsafe(var300, var302, var303, var304, var305);
5275 var299 = var301;
5276 varonce298 = var299;
5277 }
5278 ((struct instance_core__NativeArray*)var297)->values[0]=var299;
5279 if (likely(varonce306!=NULL)) {
5280 var307 = varonce306;
5281 } else {
5282 var308 = "` at ";
5283 var310 = (val*)(5l<<2|1);
5284 var311 = (val*)(5l<<2|1);
5285 var312 = (val*)((long)(0)<<2|3);
5286 var313 = (val*)((long)(0)<<2|3);
5287 var309 = core__flat___CString___to_s_unsafe(var308, var310, var311, var312, var313);
5288 var307 = var309;
5289 varonce306 = var307;
5290 }
5291 ((struct instance_core__NativeArray*)var297)->values[2]=var307;
5292 } else {
5293 var297 = varonce296;
5294 varonce296 = NULL;
5295 }
5296 {
5297 var314 = nitc___nitc__MGroup___nitc__model_base__MEntity__full_name(var_mgroup);
5298 }
5299 ((struct instance_core__NativeArray*)var297)->values[1]=var314;
5300 ((struct instance_core__NativeArray*)var297)->values[3]=var_dirpath;
5301 {
5302 var315 = ((val*(*)(val* self))(var297->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var297); /* native_to_s on <var297:NativeArray[String]>*/
5303 }
5304 varonce296 = var297;
5305 {
5306 nitc___nitc__ToolContext___info(var293, var315, 2l); /* Direct call toolcontext$ToolContext$info on <var293:ToolContext>*/
5307 }
5308 }
5309 if (likely(varonce316!=NULL)) {
5310 var317 = varonce316;
5311 } else {
5312 var318 = "README.md";
5313 var320 = (val*)(9l<<2|1);
5314 var321 = (val*)(9l<<2|1);
5315 var322 = (val*)((long)(0)<<2|3);
5316 var323 = (val*)((long)(0)<<2|3);
5317 var319 = core__flat___CString___to_s_unsafe(var318, var320, var321, var322, var323);
5318 var317 = var319;
5319 varonce316 = var317;
5320 }
5321 {
5322 var324 = core__file___String___join_path(var_dirpath, var317);
5323 }
5324 var_readme = var324;
5325 {
5326 var325 = core__file___Text___file_exists(var_readme);
5327 }
5328 var326 = !var325;
5329 if (var326){
5330 if (likely(varonce327!=NULL)) {
5331 var328 = varonce327;
5332 } else {
5333 var329 = "README";
5334 var331 = (val*)(6l<<2|1);
5335 var332 = (val*)(6l<<2|1);
5336 var333 = (val*)((long)(0)<<2|3);
5337 var334 = (val*)((long)(0)<<2|3);
5338 var330 = core__flat___CString___to_s_unsafe(var329, var331, var332, var333, var334);
5339 var328 = var330;
5340 varonce327 = var328;
5341 }
5342 {
5343 var335 = core__file___String___join_path(var_dirpath, var328);
5344 }
5345 var_readme = var335;
5346 } else {
5347 }
5348 {
5349 var336 = core__file___Text___file_exists(var_readme);
5350 }
5351 if (var336){
5352 {
5353 var337 = nitc__loader___ModelBuilder___load_markdown(self, var_readme);
5354 }
5355 var_mdoc = var337;
5356 {
5357 { /* Inline mdoc$MEntity$mdoc= (var_mgroup,var_mdoc) on <var_mgroup:nullable Object(MGroup)> */
5358 var_mgroup->attrs[COLOR_nitc__mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on <var_mgroup:nullable Object(MGroup)> */
5359 RET_LABEL338:(void)0;
5360 }
5361 }
5362 {
5363 { /* Inline mdoc$MDoc$original_mentity= (var_mdoc,var_mgroup) on <var_mdoc:MDoc> */
5364 var_mdoc->attrs[COLOR_nitc__mdoc__MDoc___original_mentity].val = var_mgroup; /* _original_mentity on <var_mdoc:MDoc> */
5365 RET_LABEL339:(void)0;
5366 }
5367 }
5368 } else {
5369 }
5370 {
5371 { /* Inline loader$ModelBuilder$mgroups (self) on <self:ModelBuilder> */
5372 var342 = self->attrs[COLOR_nitc__loader__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
5373 if (unlikely(var342 == NULL)) {
5374 if(catchStack.cursor >= 0){
5375 longjmp(catchStack.envs[catchStack.cursor], 1);
5376 }
5377 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
5378 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 477);
5379 fatal_exit(1);
5380 }
5381 var340 = var342;
5382 RET_LABEL341:(void)0;
5383 }
5384 }
5385 {
5386 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var340, var_rdp, var_mgroup); /* Direct call hash_collection$HashMap$[]= on <var340:HashMap[String, nullable MGroup]>*/
5387 }
5388 var = var_mgroup;
5389 goto RET_LABEL;
5390 RET_LABEL:;
5391 return var;
5392 }
5393 /* method loader$ModelBuilder$load_markdown for (self: ModelBuilder, String): MDoc */
5394 val* nitc__loader___ModelBuilder___load_markdown(val* self, val* p0) {
5395 val* var /* : MDoc */;
5396 val* var_filepath /* var filepath: String */;
5397 val* var1 /* : FileReader */;
5398 val* var_s /* var s: FileReader */;
5399 val* var2 /* : Array[String] */;
5400 val* var_lines /* var lines: Array[String] */;
5401 val* var3 /* : Array[Int] */;
5402 val* var_line_starts /* var line_starts: Array[Int] */;
5403 long var_len /* var len: Int */;
5404 short int var4 /* : Bool */;
5405 short int var5 /* : Bool */;
5406 val* var6 /* : String */;
5407 val* var_line /* var line: String */;
5408 val* var7 /* : nullable Object */;
5409 long var8 /* : Int */;
5410 long var9 /* : Int */;
5411 short int var11 /* : Bool */;
5412 int cltype;
5413 int idtype;
5414 const char* var_class_name;
5415 long var12 /* : Int */;
5416 long var13 /* : Int */;
5417 short int var15 /* : Bool */;
5418 int cltype16;
5419 int idtype17;
5420 const char* var_class_name18;
5421 long var19 /* : Int */;
5422 val* var20 /* : SourceFile */;
5423 static val* varonce;
5424 val* var21 /* : String */;
5425 char* var22 /* : CString */;
5426 val* var23 /* : String */;
5427 val* var24 /* : nullable Int */;
5428 val* var25 /* : nullable Int */;
5429 val* var26 /* : nullable Bool */;
5430 val* var27 /* : nullable Bool */;
5431 val* var28 /* : String */;
5432 val* var_source /* var source: SourceFile */;
5433 val* var29 /* : Array[Int] */;
5434 val* var31 /* : Array[Int] */;
5435 val* var32 /* : MDoc */;
5436 val* var33 /* : Location */;
5437 long var34 /* : Int */;
5438 long var36 /* : Int */;
5439 val* var_mdoc /* var mdoc: MDoc */;
5440 val* var37 /* : Array[String] */;
5441 val* var39 /* : Array[String] */;
5442 var_filepath = p0;
5443 var1 = NEW_core__FileReader(&type_core__FileReader);
5444 {
5445 core___core__FileReader___open(var1, var_filepath); /* Direct call file$FileReader$open on <var1:FileReader>*/
5446 }
5447 var_s = var1;
5448 var2 = NEW_core__Array(&type_core__Array__core__String);
5449 {
5450 core___core__Array___core__kernel__Object__init(var2); /* Direct call array$Array$init on <var2:Array[String]>*/
5451 }
5452 var_lines = var2;
5453 var3 = NEW_core__Array(&type_core__Array__core__Int);
5454 {
5455 core___core__Array___core__kernel__Object__init(var3); /* Direct call array$Array$init on <var3:Array[Int]>*/
5456 }
5457 var_line_starts = var3;
5458 var_len = 1l;
5459 for(;;) {
5460 {
5461 var4 = core___core__BufferedReader___Reader__eof(var_s);
5462 }
5463 var5 = !var4;
5464 if (var5){
5465 {
5466 var6 = core___core__Reader___read_line(var_s);
5467 }
5468 var_line = var6;
5469 {
5470 core___core__Array___core__abstract_collection__SimpleCollection__add(var_lines, var_line); /* Direct call array$Array$add on <var_lines:Array[String]>*/
5471 }
5472 {
5473 var7 = (val*)(var_len<<2|1);
5474 core___core__Array___core__abstract_collection__SimpleCollection__add(var_line_starts, var7); /* Direct call array$Array$add on <var_line_starts:Array[Int]>*/
5475 }
5476 {
5477 var8 = ((long(*)(val* self))(var_line->class->vft[COLOR_core__abstract_text__Text__length]))(var_line); /* length on <var_line:String>*/
5478 }
5479 {
5480 { /* Inline kernel$Int$+ (var8,1l) on <var8:Int> */
5481 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5482 /* <1l:Int> isa OTHER */
5483 var11 = 1; /* easy <1l:Int> isa OTHER*/
5484 if (unlikely(!var11)) {
5485 var_class_name = type_core__Int.name;
5486 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5487 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
5488 fatal_exit(1);
5489 }
5490 var12 = var8 + 1l;
5491 var9 = var12;
5492 goto RET_LABEL10;
5493 RET_LABEL10:(void)0;
5494 }
5495 }
5496 {
5497 { /* Inline kernel$Int$+ (var_len,var9) on <var_len:Int> */
5498 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
5499 /* <var9:Int> isa OTHER */
5500 var15 = 1; /* easy <var9:Int> isa OTHER*/
5501 if (unlikely(!var15)) {
5502 var_class_name18 = type_core__Int.name;
5503 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
5504 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
5505 fatal_exit(1);
5506 }
5507 var19 = var_len + var9;
5508 var13 = var19;
5509 goto RET_LABEL14;
5510 RET_LABEL14:(void)0;
5511 }
5512 }
5513 var_len = var13;
5514 } else {
5515 goto BREAK_label;
5516 }
5517 }
5518 BREAK_label: (void)0;
5519 {
5520 core___core__FileReader___core__stream__Stream__close(var_s); /* Direct call file$FileReader$close on <var_s:FileReader>*/
5521 }
5522 var20 = NEW_nitc__SourceFile(&type_nitc__SourceFile);
5523 if (likely(varonce!=NULL)) {
5524 var21 = varonce;
5525 } else {
5526 var22 = "\n";
5527 var24 = (val*)(1l<<2|1);
5528 var25 = (val*)(1l<<2|1);
5529 var26 = (val*)((long)(0)<<2|3);
5530 var27 = (val*)((long)(0)<<2|3);
5531 var23 = core__flat___CString___to_s_unsafe(var22, var24, var25, var26, var27);
5532 var21 = var23;
5533 varonce = var21;
5534 }
5535 {
5536 var28 = core__abstract_text___Collection___join(var_lines, var21, ((val*)NULL));
5537 }
5538 {
5539 nitc___nitc__SourceFile___from_string(var20, var_filepath, var28); /* Direct call location$SourceFile$from_string on <var20:SourceFile>*/
5540 }
5541 var_source = var20;
5542 {
5543 { /* Inline location$SourceFile$line_starts (var_source) on <var_source:SourceFile> */
5544 var31 = var_source->attrs[COLOR_nitc__location__SourceFile___line_starts].val; /* _line_starts on <var_source:SourceFile> */
5545 if (unlikely(var31 == NULL)) {
5546 if(catchStack.cursor >= 0){
5547 longjmp(catchStack.envs[catchStack.cursor], 1);
5548 }
5549 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _line_starts");
5550 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__location, 46);
5551 fatal_exit(1);
5552 }
5553 var29 = var31;
5554 RET_LABEL30:(void)0;
5555 }
5556 }
5557 {
5558 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var29, var_line_starts); /* Direct call array$Array$add_all on <var29:Array[Int]>*/
5559 }
5560 var32 = NEW_nitc__MDoc(&type_nitc__MDoc);
5561 var33 = NEW_nitc__Location(&type_nitc__Location);
5562 {
5563 { /* Inline array$AbstractArrayRead$length (var_lines) on <var_lines:Array[String]> */
5564 var36 = var_lines->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_lines:Array[String]> */
5565 var34 = var36;
5566 RET_LABEL35:(void)0;
5567 }
5568 }
5569 {
5570 ((void(*)(val* self, val* p0))(var33->class->vft[COLOR_nitc__location__Location__file_61d]))(var33, var_source); /* file= on <var33:Location>*/
5571 }
5572 {
5573 ((void(*)(val* self, long p0))(var33->class->vft[COLOR_nitc__location__Location__line_start_61d]))(var33, 1l); /* line_start= on <var33:Location>*/
5574 }
5575 {
5576 ((void(*)(val* self, long p0))(var33->class->vft[COLOR_nitc__location__Location__line_end_61d]))(var33, var34); /* line_end= on <var33:Location>*/
5577 }
5578 {
5579 ((void(*)(val* self, long p0))(var33->class->vft[COLOR_nitc__location__Location__column_start_61d]))(var33, 0l); /* column_start= on <var33:Location>*/
5580 }
5581 {
5582 ((void(*)(val* self, long p0))(var33->class->vft[COLOR_nitc__location__Location__column_end_61d]))(var33, 0l); /* column_end= on <var33:Location>*/
5583 }
5584 {
5585 ((void(*)(val* self))(var33->class->vft[COLOR_core__kernel__Object__init]))(var33); /* init on <var33:Location>*/
5586 }
5587 {
5588 ((void(*)(val* self, val* p0))(var32->class->vft[COLOR_nitc__mdoc__MDoc__location_61d]))(var32, var33); /* location= on <var32:MDoc>*/
5589 }
5590 {
5591 ((void(*)(val* self))(var32->class->vft[COLOR_core__kernel__Object__init]))(var32); /* init on <var32:MDoc>*/
5592 }
5593 var_mdoc = var32;
5594 {
5595 { /* Inline mdoc$MDoc$content (var_mdoc) on <var_mdoc:MDoc> */
5596 var39 = var_mdoc->attrs[COLOR_nitc__mdoc__MDoc___content].val; /* _content on <var_mdoc:MDoc> */
5597 if (unlikely(var39 == NULL)) {
5598 if(catchStack.cursor >= 0){
5599 longjmp(catchStack.envs[catchStack.cursor], 1);
5600 }
5601 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _content");
5602 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mdoc, 23);
5603 fatal_exit(1);
5604 }
5605 var37 = var39;
5606 RET_LABEL38:(void)0;
5607 }
5608 }
5609 {
5610 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var37, var_lines); /* Direct call array$Array$add_all on <var37:Array[String]>*/
5611 }
5612 var = var_mdoc;
5613 goto RET_LABEL;
5614 RET_LABEL:;
5615 return var;
5616 }
5617 /* method loader$ModelBuilder$scan_group for (self: ModelBuilder, MGroup) */
5618 void nitc__loader___ModelBuilder___scan_group(val* self, val* p0) {
5619 val* var_mgroup /* var mgroup: MGroup */;
5620 short int var /* : Bool */;
5621 short int var2 /* : Bool */;
5622 val* var4 /* : nullable String */;
5623 val* var_p /* var p: nullable String */;
5624 short int var5 /* : Bool */;
5625 short int var6 /* : Bool */;
5626 val* var7 /* : Array[String] */;
5627 val* var_files /* var files: Array[String] */;
5628 val* var8 /* : Sys */;
5629 val* var9 /* : Comparator */;
5630 val* var_ /* var : Array[String] */;
5631 val* var10 /* : IndexedIterator[nullable Object] */;
5632 val* var_11 /* var : IndexedIterator[String] */;
5633 short int var12 /* : Bool */;
5634 val* var13 /* : nullable Object */;
5635 val* var_f /* var f: String */;
5636 val* var14 /* : String */;
5637 val* var_fp /* var fp: String */;
5638 val* var15 /* : nullable MGroup */;
5639 val* var_g /* var g: nullable MGroup */;
5640 short int var16 /* : Bool */;
5641 short int var17 /* : Bool */;
5642 val* var_other /* var other: nullable Object */;
5643 short int var19 /* : Bool */;
5644 short int var21 /* : Bool */;
5645 val* var22 /* : nullable MModule */;
5646 val* var23 /* : MPackage */;
5647 val* var25 /* : MPackage */;
5648 val* var26 /* : MPackage */;
5649 val* var28 /* : MPackage */;
5650 short int var29 /* : Bool */;
5651 short int var31 /* : Bool */;
5652 short int var33 /* : Bool */;
5653 var_mgroup = p0;
5654 {
5655 { /* Inline loader$MGroup$scanned (var_mgroup) on <var_mgroup:MGroup> */
5656 var2 = var_mgroup->attrs[COLOR_nitc__loader__MGroup___scanned].s; /* _scanned on <var_mgroup:MGroup> */
5657 var = var2;
5658 RET_LABEL1:(void)0;
5659 }
5660 }
5661 if (var){
5662 goto RET_LABEL;
5663 } else {
5664 }
5665 {
5666 { /* Inline loader$MGroup$scanned= (var_mgroup,1) on <var_mgroup:MGroup> */
5667 var_mgroup->attrs[COLOR_nitc__loader__MGroup___scanned].s = 1; /* _scanned on <var_mgroup:MGroup> */
5668 RET_LABEL3:(void)0;
5669 }
5670 }
5671 {
5672 var4 = nitc___nitc__MGroup___filepath(var_mgroup);
5673 }
5674 var_p = var4;
5675 if (var_p == NULL) {
5676 var5 = 1; /* is null */
5677 } else {
5678 var5 = 0; /* arg is null but recv is not */
5679 }
5680 if (0) {
5681 var6 = ((short int(*)(val* self, val* p0))(var_p->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_p, ((val*)NULL)); /* == on <var_p:nullable String>*/
5682 var5 = var6;
5683 }
5684 if (var5){
5685 goto RET_LABEL;
5686 } else {
5687 }
5688 {
5689 var7 = core__file___String___files(var_p);
5690 }
5691 var_files = var7;
5692 var8 = glob_sys;
5693 {
5694 var9 = core__abstract_text___Sys___alpha_comparator(var8);
5695 }
5696 {
5697 core___core__Comparator___sort(var9, var_files); /* Direct call sorter$Comparator$sort on <var9:Comparator>*/
5698 }
5699 var_ = var_files;
5700 {
5701 var10 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
5702 }
5703 var_11 = var10;
5704 for(;;) {
5705 {
5706 var12 = ((short int(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_11); /* is_ok on <var_11:IndexedIterator[String]>*/
5707 }
5708 if (var12){
5709 } else {
5710 goto BREAK_label;
5711 }
5712 {
5713 var13 = ((val*(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_11); /* item on <var_11:IndexedIterator[String]>*/
5714 }
5715 var_f = var13;
5716 {
5717 var14 = core__file___String____47d(var_p, var_f);
5718 }
5719 var_fp = var14;
5720 {
5721 var15 = nitc__loader___ModelBuilder___identify_group(self, var_fp);
5722 }
5723 var_g = var15;
5724 if (var_g == NULL) {
5725 var16 = 1; /* is null */
5726 } else {
5727 var16 = 0; /* arg is null but recv is not */
5728 }
5729 if (0) {
5730 { /* Inline kernel$Object$== (var_g,((val*)NULL)) on <var_g:nullable MGroup> */
5731 var_other = ((val*)NULL);
5732 {
5733 { /* Inline kernel$Object$is_same_instance (var_g,var_other) on <var_g:nullable MGroup(MGroup)> */
5734 var21 = var_g == var_other;
5735 var19 = var21;
5736 goto RET_LABEL20;
5737 RET_LABEL20:(void)0;
5738 }
5739 }
5740 var17 = var19;
5741 goto RET_LABEL18;
5742 RET_LABEL18:(void)0;
5743 }
5744 var16 = var17;
5745 }
5746 if (var16){
5747 {
5748 var22 = nitc__loader___ModelBuilder___identify_module(self, var_fp);
5749 }
5750 } else {
5751 {
5752 { /* Inline mpackage$MGroup$mpackage (var_g) on <var_g:nullable MGroup(MGroup)> */
5753 var25 = var_g->attrs[COLOR_nitc__mpackage__MGroup___mpackage].val; /* _mpackage on <var_g:nullable MGroup(MGroup)> */
5754 if (unlikely(var25 == NULL)) {
5755 if(catchStack.cursor >= 0){
5756 longjmp(catchStack.envs[catchStack.cursor], 1);
5757 }
5758 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpackage");
5759 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 76);
5760 fatal_exit(1);
5761 }
5762 var23 = var25;
5763 RET_LABEL24:(void)0;
5764 }
5765 }
5766 {
5767 { /* Inline mpackage$MGroup$mpackage (var_mgroup) on <var_mgroup:MGroup> */
5768 var28 = var_mgroup->attrs[COLOR_nitc__mpackage__MGroup___mpackage].val; /* _mpackage on <var_mgroup:MGroup> */
5769 if (unlikely(var28 == NULL)) {
5770 if(catchStack.cursor >= 0){
5771 longjmp(catchStack.envs[catchStack.cursor], 1);
5772 }
5773 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpackage");
5774 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 76);
5775 fatal_exit(1);
5776 }
5777 var26 = var28;
5778 RET_LABEL27:(void)0;
5779 }
5780 }
5781 {
5782 { /* Inline kernel$Object$== (var23,var26) on <var23:MPackage> */
5783 var_other = var26;
5784 {
5785 { /* Inline kernel$Object$is_same_instance (var23,var_other) on <var23:MPackage> */
5786 var33 = var23 == var_other;
5787 var31 = var33;
5788 goto RET_LABEL32;
5789 RET_LABEL32:(void)0;
5790 }
5791 }
5792 var29 = var31;
5793 goto RET_LABEL30;
5794 RET_LABEL30:(void)0;
5795 }
5796 }
5797 if (var29){
5798 {
5799 nitc__loader___ModelBuilder___scan_group(self, var_g); /* Direct call loader$ModelBuilder$scan_group on <self:ModelBuilder>*/
5800 }
5801 } else {
5802 }
5803 }
5804 {
5805 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_11); /* next on <var_11:IndexedIterator[String]>*/
5806 }
5807 }
5808 BREAK_label: (void)0;
5809 {
5810 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_11); /* finish on <var_11:IndexedIterator[String]>*/
5811 }
5812 RET_LABEL:;
5813 }
5814 /* method loader$ModelBuilder$module_absolute_path for (self: ModelBuilder, String): String */
5815 val* nitc__loader___ModelBuilder___module_absolute_path(val* self, val* p0) {
5816 val* var /* : String */;
5817 val* var_path /* var path: String */;
5818 val* var1 /* : String */;
5819 var_path = p0;
5820 {
5821 var1 = core__file___String___realpath(var_path);
5822 }
5823 var = var1;
5824 goto RET_LABEL;
5825 RET_LABEL:;
5826 return var;
5827 }
5828 /* method loader$ModelBuilder$load_module_ast for (self: ModelBuilder, String): nullable AModule */
5829 val* nitc__loader___ModelBuilder___load_module_ast(val* self, val* p0) {
5830 val* var /* : nullable AModule */;
5831 val* var_filename /* var filename: String */;
5832 static val* varonce;
5833 val* var1 /* : String */;
5834 char* var2 /* : CString */;
5835 val* var3 /* : String */;
5836 val* var4 /* : nullable Int */;
5837 val* var5 /* : nullable Int */;
5838 val* var6 /* : nullable Bool */;
5839 val* var7 /* : nullable Bool */;
5840 short int var8 /* : Bool */;
5841 short int var9 /* : Bool */;
5842 val* var10 /* : ToolContext */;
5843 val* var12 /* : ToolContext */;
5844 val* var14 /* : NativeArray[String] */;
5845 static val* varonce13;
5846 static val* varonce15;
5847 val* var16 /* : String */;
5848 char* var17 /* : CString */;
5849 val* var18 /* : String */;
5850 val* var19 /* : nullable Int */;
5851 val* var20 /* : nullable Int */;
5852 val* var21 /* : nullable Bool */;
5853 val* var22 /* : nullable Bool */;
5854 static val* varonce23;
5855 val* var24 /* : String */;
5856 char* var25 /* : CString */;
5857 val* var26 /* : String */;
5858 val* var27 /* : nullable Int */;
5859 val* var28 /* : nullable Int */;
5860 val* var29 /* : nullable Bool */;
5861 val* var30 /* : nullable Bool */;
5862 val* var31 /* : String */;
5863 val* var32 /* : Message */;
5864 short int var33 /* : Bool */;
5865 short int var34 /* : Bool */;
5866 val* var35 /* : ToolContext */;
5867 val* var37 /* : ToolContext */;
5868 val* var39 /* : NativeArray[String] */;
5869 static val* varonce38;
5870 static val* varonce40;
5871 val* var41 /* : String */;
5872 char* var42 /* : CString */;
5873 val* var43 /* : String */;
5874 val* var44 /* : nullable Int */;
5875 val* var45 /* : nullable Int */;
5876 val* var46 /* : nullable Bool */;
5877 val* var47 /* : nullable Bool */;
5878 static val* varonce48;
5879 val* var49 /* : String */;
5880 char* var50 /* : CString */;
5881 val* var51 /* : String */;
5882 val* var52 /* : nullable Int */;
5883 val* var53 /* : nullable Int */;
5884 val* var54 /* : nullable Bool */;
5885 val* var55 /* : nullable Bool */;
5886 val* var56 /* : String */;
5887 val* var57 /* : Message */;
5888 val* var58 /* : ToolContext */;
5889 val* var60 /* : ToolContext */;
5890 val* var62 /* : NativeArray[String] */;
5891 static val* varonce61;
5892 static val* varonce63;
5893 val* var64 /* : String */;
5894 char* var65 /* : CString */;
5895 val* var66 /* : String */;
5896 val* var67 /* : nullable Int */;
5897 val* var68 /* : nullable Int */;
5898 val* var69 /* : nullable Bool */;
5899 val* var70 /* : nullable Bool */;
5900 val* var71 /* : String */;
5901 val* var72 /* : FileReader */;
5902 val* var_file /* var file: FileReader */;
5903 val* var73 /* : Lexer */;
5904 val* var74 /* : SourceFile */;
5905 val* var_lexer /* var lexer: Lexer */;
5906 val* var75 /* : Parser */;
5907 val* var_parser /* var parser: Parser */;
5908 val* var76 /* : Start */;
5909 val* var_tree /* var tree: Start */;
5910 val* var77 /* : nullable AModule */;
5911 val* var79 /* : nullable AModule */;
5912 val* var_nmodule /* var nmodule: nullable AModule */;
5913 short int var80 /* : Bool */;
5914 short int var81 /* : Bool */;
5915 val* var_other /* var other: nullable Object */;
5916 short int var83 /* : Bool */;
5917 short int var85 /* : Bool */;
5918 val* var86 /* : EOF */;
5919 val* var88 /* : EOF */;
5920 val* var_neof /* var neof: EOF */;
5921 short int var89 /* : Bool */;
5922 int cltype;
5923 int idtype;
5924 val* var90 /* : String */;
5925 val* var92 /* : String */;
5926 var_filename = p0;
5927 if (likely(varonce!=NULL)) {
5928 var1 = varonce;
5929 } else {
5930 var2 = ".nit";
5931 var4 = (val*)(4l<<2|1);
5932 var5 = (val*)(4l<<2|1);
5933 var6 = (val*)((long)(0)<<2|3);
5934 var7 = (val*)((long)(0)<<2|3);
5935 var3 = core__flat___CString___to_s_unsafe(var2, var4, var5, var6, var7);
5936 var1 = var3;
5937 varonce = var1;
5938 }
5939 {
5940 var8 = core___core__Text___has_suffix(var_filename, var1);
5941 }
5942 var9 = !var8;
5943 if (var9){
5944 {
5945 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
5946 var12 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
5947 if (unlikely(var12 == NULL)) {
5948 if(catchStack.cursor >= 0){
5949 longjmp(catchStack.envs[catchStack.cursor], 1);
5950 }
5951 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5952 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
5953 fatal_exit(1);
5954 }
5955 var10 = var12;
5956 RET_LABEL11:(void)0;
5957 }
5958 }
5959 if (unlikely(varonce13==NULL)) {
5960 var14 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
5961 if (likely(varonce15!=NULL)) {
5962 var16 = varonce15;
5963 } else {
5964 var17 = "Error: file `";
5965 var19 = (val*)(13l<<2|1);
5966 var20 = (val*)(13l<<2|1);
5967 var21 = (val*)((long)(0)<<2|3);
5968 var22 = (val*)((long)(0)<<2|3);
5969 var18 = core__flat___CString___to_s_unsafe(var17, var19, var20, var21, var22);
5970 var16 = var18;
5971 varonce15 = var16;
5972 }
5973 ((struct instance_core__NativeArray*)var14)->values[0]=var16;
5974 if (likely(varonce23!=NULL)) {
5975 var24 = varonce23;
5976 } else {
5977 var25 = "` is not a valid nit module.";
5978 var27 = (val*)(28l<<2|1);
5979 var28 = (val*)(28l<<2|1);
5980 var29 = (val*)((long)(0)<<2|3);
5981 var30 = (val*)((long)(0)<<2|3);
5982 var26 = core__flat___CString___to_s_unsafe(var25, var27, var28, var29, var30);
5983 var24 = var26;
5984 varonce23 = var24;
5985 }
5986 ((struct instance_core__NativeArray*)var14)->values[2]=var24;
5987 } else {
5988 var14 = varonce13;
5989 varonce13 = NULL;
5990 }
5991 ((struct instance_core__NativeArray*)var14)->values[1]=var_filename;
5992 {
5993 var31 = ((val*(*)(val* self))(var14->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var14); /* native_to_s on <var14:NativeArray[String]>*/
5994 }
5995 varonce13 = var14;
5996 {
5997 var32 = nitc___nitc__ToolContext___error(var10, ((val*)NULL), var31);
5998 }
5999 var = ((val*)NULL);
6000 goto RET_LABEL;
6001 } else {
6002 }
6003 {
6004 var33 = core__file___Text___file_exists(var_filename);
6005 }
6006 var34 = !var33;
6007 if (var34){
6008 {
6009 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
6010 var37 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
6011 if (unlikely(var37 == NULL)) {
6012 if(catchStack.cursor >= 0){
6013 longjmp(catchStack.envs[catchStack.cursor], 1);
6014 }
6015 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6016 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
6017 fatal_exit(1);
6018 }
6019 var35 = var37;
6020 RET_LABEL36:(void)0;
6021 }
6022 }
6023 if (unlikely(varonce38==NULL)) {
6024 var39 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
6025 if (likely(varonce40!=NULL)) {
6026 var41 = varonce40;
6027 } else {
6028 var42 = "Error: file `";
6029 var44 = (val*)(13l<<2|1);
6030 var45 = (val*)(13l<<2|1);
6031 var46 = (val*)((long)(0)<<2|3);
6032 var47 = (val*)((long)(0)<<2|3);
6033 var43 = core__flat___CString___to_s_unsafe(var42, var44, var45, var46, var47);
6034 var41 = var43;
6035 varonce40 = var41;
6036 }
6037 ((struct instance_core__NativeArray*)var39)->values[0]=var41;
6038 if (likely(varonce48!=NULL)) {
6039 var49 = varonce48;
6040 } else {
6041 var50 = "` not found.";
6042 var52 = (val*)(12l<<2|1);
6043 var53 = (val*)(12l<<2|1);
6044 var54 = (val*)((long)(0)<<2|3);
6045 var55 = (val*)((long)(0)<<2|3);
6046 var51 = core__flat___CString___to_s_unsafe(var50, var52, var53, var54, var55);
6047 var49 = var51;
6048 varonce48 = var49;
6049 }
6050 ((struct instance_core__NativeArray*)var39)->values[2]=var49;
6051 } else {
6052 var39 = varonce38;
6053 varonce38 = NULL;
6054 }
6055 ((struct instance_core__NativeArray*)var39)->values[1]=var_filename;
6056 {
6057 var56 = ((val*(*)(val* self))(var39->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var39); /* native_to_s on <var39:NativeArray[String]>*/
6058 }
6059 varonce38 = var39;
6060 {
6061 var57 = nitc___nitc__ToolContext___error(var35, ((val*)NULL), var56);
6062 }
6063 var = ((val*)NULL);
6064 goto RET_LABEL;
6065 } else {
6066 }
6067 {
6068 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
6069 var60 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
6070 if (unlikely(var60 == NULL)) {
6071 if(catchStack.cursor >= 0){
6072 longjmp(catchStack.envs[catchStack.cursor], 1);
6073 }
6074 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6075 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
6076 fatal_exit(1);
6077 }
6078 var58 = var60;
6079 RET_LABEL59:(void)0;
6080 }
6081 }
6082 if (unlikely(varonce61==NULL)) {
6083 var62 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
6084 if (likely(varonce63!=NULL)) {
6085 var64 = varonce63;
6086 } else {
6087 var65 = "load module ";
6088 var67 = (val*)(12l<<2|1);
6089 var68 = (val*)(12l<<2|1);
6090 var69 = (val*)((long)(0)<<2|3);
6091 var70 = (val*)((long)(0)<<2|3);
6092 var66 = core__flat___CString___to_s_unsafe(var65, var67, var68, var69, var70);
6093 var64 = var66;
6094 varonce63 = var64;
6095 }
6096 ((struct instance_core__NativeArray*)var62)->values[0]=var64;
6097 } else {
6098 var62 = varonce61;
6099 varonce61 = NULL;
6100 }
6101 ((struct instance_core__NativeArray*)var62)->values[1]=var_filename;
6102 {
6103 var71 = ((val*(*)(val* self))(var62->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var62); /* native_to_s on <var62:NativeArray[String]>*/
6104 }
6105 varonce61 = var62;
6106 {
6107 nitc___nitc__ToolContext___info(var58, var71, 2l); /* Direct call toolcontext$ToolContext$info on <var58:ToolContext>*/
6108 }
6109 var72 = NEW_core__FileReader(&type_core__FileReader);
6110 {
6111 core___core__FileReader___open(var72, var_filename); /* Direct call file$FileReader$open on <var72:FileReader>*/
6112 }
6113 var_file = var72;
6114 var73 = NEW_nitc__Lexer(&type_nitc__Lexer);
6115 var74 = NEW_nitc__SourceFile(&type_nitc__SourceFile);
6116 {
6117 ((void(*)(val* self, val* p0))(var74->class->vft[COLOR_nitc__location__SourceFile__filename_61d]))(var74, var_filename); /* filename= on <var74:SourceFile>*/
6118 }
6119 {
6120 ((void(*)(val* self, val* p0))(var74->class->vft[COLOR_nitc__location__SourceFile__stream_61d]))(var74, var_file); /* stream= on <var74:SourceFile>*/
6121 }
6122 {
6123 ((void(*)(val* self))(var74->class->vft[COLOR_core__kernel__Object__init]))(var74); /* init on <var74:SourceFile>*/
6124 }
6125 {
6126 ((void(*)(val* self, val* p0))(var73->class->vft[COLOR_nitc__lexer_work__Lexer__file_61d]))(var73, var74); /* file= on <var73:Lexer>*/
6127 }
6128 {
6129 ((void(*)(val* self))(var73->class->vft[COLOR_core__kernel__Object__init]))(var73); /* init on <var73:Lexer>*/
6130 }
6131 var_lexer = var73;
6132 var75 = NEW_nitc__Parser(&type_nitc__Parser);
6133 {
6134 ((void(*)(val* self, val* p0))(var75->class->vft[COLOR_nitc__parser_work__Parser__lexer_61d]))(var75, var_lexer); /* lexer= on <var75:Parser>*/
6135 }
6136 {
6137 ((void(*)(val* self))(var75->class->vft[COLOR_core__kernel__Object__init]))(var75); /* init on <var75:Parser>*/
6138 }
6139 var_parser = var75;
6140 {
6141 var76 = nitc___nitc__Parser___parse(var_parser);
6142 }
6143 var_tree = var76;
6144 {
6145 core___core__FileReader___core__stream__Stream__close(var_file); /* Direct call file$FileReader$close on <var_file:FileReader>*/
6146 }
6147 {
6148 { /* Inline parser_nodes$Start$n_base (var_tree) on <var_tree:Start> */
6149 var79 = var_tree->attrs[COLOR_nitc__parser_nodes__Start___n_base].val; /* _n_base on <var_tree:Start> */
6150 var77 = var79;
6151 RET_LABEL78:(void)0;
6152 }
6153 }
6154 var_nmodule = var77;
6155 if (var_nmodule == NULL) {
6156 var80 = 1; /* is null */
6157 } else {
6158 var80 = 0; /* arg is null but recv is not */
6159 }
6160 if (0) {
6161 { /* Inline kernel$Object$== (var_nmodule,((val*)NULL)) on <var_nmodule:nullable AModule> */
6162 var_other = ((val*)NULL);
6163 {
6164 { /* Inline kernel$Object$is_same_instance (var_nmodule,var_other) on <var_nmodule:nullable AModule(AModule)> */
6165 var85 = var_nmodule == var_other;
6166 var83 = var85;
6167 goto RET_LABEL84;
6168 RET_LABEL84:(void)0;
6169 }
6170 }
6171 var81 = var83;
6172 goto RET_LABEL82;
6173 RET_LABEL82:(void)0;
6174 }
6175 var80 = var81;
6176 }
6177 if (var80){
6178 {
6179 { /* Inline parser_nodes$Start$n_eof (var_tree) on <var_tree:Start> */
6180 var88 = var_tree->attrs[COLOR_nitc__parser_nodes__Start___n_eof].val; /* _n_eof on <var_tree:Start> */
6181 if (unlikely(var88 == NULL)) {
6182 if(catchStack.cursor >= 0){
6183 longjmp(catchStack.envs[catchStack.cursor], 1);
6184 }
6185 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_eof");
6186 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 3056);
6187 fatal_exit(1);
6188 }
6189 var86 = var88;
6190 RET_LABEL87:(void)0;
6191 }
6192 }
6193 var_neof = var86;
6194 /* <var_neof:EOF> isa AError */
6195 cltype = type_nitc__AError.color;
6196 idtype = type_nitc__AError.id;
6197 if(cltype >= var_neof->type->table_size) {
6198 var89 = 0;
6199 } else {
6200 var89 = var_neof->type->type_table[cltype] == idtype;
6201 }
6202 if (unlikely(!var89)) {
6203 if(catchStack.cursor >= 0){
6204 longjmp(catchStack.envs[catchStack.cursor], 1);
6205 }
6206 PRINT_ERROR("Runtime error: %s", "Assert failed");
6207 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 685);
6208 fatal_exit(1);
6209 }
6210 {
6211 { /* Inline lexer_work$AError$message (var_neof) on <var_neof:EOF(AError)> */
6212 var92 = var_neof->attrs[COLOR_nitc__lexer_work__AError___message].val; /* _message on <var_neof:EOF(AError)> */
6213 if (unlikely(var92 == NULL)) {
6214 if(catchStack.cursor >= 0){
6215 longjmp(catchStack.envs[catchStack.cursor], 1);
6216 }
6217 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _message");
6218 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__lexer_work, 50);
6219 fatal_exit(1);
6220 }
6221 var90 = var92;
6222 RET_LABEL91:(void)0;
6223 }
6224 }
6225 {
6226 nitc___nitc__ModelBuilder___error(self, var_neof, var90); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
6227 }
6228 var = ((val*)NULL);
6229 goto RET_LABEL;
6230 } else {
6231 }
6232 var = var_nmodule;
6233 goto RET_LABEL;
6234 RET_LABEL:;
6235 return var;
6236 }
6237 /* method loader$ModelBuilder$load_module for (self: ModelBuilder, String): nullable AModule */
6238 val* nitc__loader___ModelBuilder___load_module(val* self, val* p0) {
6239 val* var /* : nullable AModule */;
6240 val* var_filename /* var filename: String */;
6241 val* var1 /* : nullable MModule */;
6242 val* var_mmodule /* var mmodule: nullable MModule */;
6243 short int var2 /* : Bool */;
6244 short int var3 /* : Bool */;
6245 val* var_other /* var other: nullable Object */;
6246 short int var5 /* : Bool */;
6247 short int var7 /* : Bool */;
6248 val* var8 /* : nullable String */;
6249 val* var10 /* : nullable String */;
6250 val* var_le /* var le: nullable String */;
6251 short int var11 /* : Bool */;
6252 short int var12 /* : Bool */;
6253 val* var_other14 /* var other: nullable Object */;
6254 short int var15 /* : Bool */;
6255 short int var16 /* : Bool */;
6256 val* var17 /* : ToolContext */;
6257 val* var19 /* : ToolContext */;
6258 val* var20 /* : Message */;
6259 short int var21 /* : Bool */;
6260 val* var22 /* : ToolContext */;
6261 val* var24 /* : ToolContext */;
6262 val* var25 /* : NativeArray[String] */;
6263 static val* varonce;
6264 static val* varonce26;
6265 val* var27 /* : String */;
6266 char* var28 /* : CString */;
6267 val* var29 /* : String */;
6268 val* var30 /* : nullable Int */;
6269 val* var31 /* : nullable Int */;
6270 val* var32 /* : nullable Bool */;
6271 val* var33 /* : nullable Bool */;
6272 static val* varonce34;
6273 val* var35 /* : String */;
6274 char* var36 /* : CString */;
6275 val* var37 /* : String */;
6276 val* var38 /* : nullable Int */;
6277 val* var39 /* : nullable Int */;
6278 val* var40 /* : nullable Bool */;
6279 val* var41 /* : nullable Bool */;
6280 val* var42 /* : String */;
6281 val* var43 /* : Message */;
6282 val* var44 /* : ToolContext */;
6283 val* var46 /* : ToolContext */;
6284 val* var48 /* : NativeArray[String] */;
6285 static val* varonce47;
6286 static val* varonce49;
6287 val* var50 /* : String */;
6288 char* var51 /* : CString */;
6289 val* var52 /* : String */;
6290 val* var53 /* : nullable Int */;
6291 val* var54 /* : nullable Int */;
6292 val* var55 /* : nullable Bool */;
6293 val* var56 /* : nullable Bool */;
6294 static val* varonce57;
6295 val* var58 /* : String */;
6296 char* var59 /* : CString */;
6297 val* var60 /* : String */;
6298 val* var61 /* : nullable Int */;
6299 val* var62 /* : nullable Int */;
6300 val* var63 /* : nullable Bool */;
6301 val* var64 /* : nullable Bool */;
6302 val* var65 /* : String */;
6303 val* var66 /* : Message */;
6304 val* var67 /* : nullable AModule */;
6305 var_filename = p0;
6306 {
6307 var1 = nitc__loader___ModelBuilder___identify_module(self, var_filename);
6308 }
6309 var_mmodule = var1;
6310 if (var_mmodule == NULL) {
6311 var2 = 1; /* is null */
6312 } else {
6313 var2 = 0; /* arg is null but recv is not */
6314 }
6315 if (0) {
6316 { /* Inline kernel$Object$== (var_mmodule,((val*)NULL)) on <var_mmodule:nullable MModule> */
6317 var_other = ((val*)NULL);
6318 {
6319 { /* Inline kernel$Object$is_same_instance (var_mmodule,var_other) on <var_mmodule:nullable MModule(MModule)> */
6320 var7 = var_mmodule == var_other;
6321 var5 = var7;
6322 goto RET_LABEL6;
6323 RET_LABEL6:(void)0;
6324 }
6325 }
6326 var3 = var5;
6327 goto RET_LABEL4;
6328 RET_LABEL4:(void)0;
6329 }
6330 var2 = var3;
6331 }
6332 if (var2){
6333 {
6334 { /* Inline loader$ModelBuilder$last_loader_error (self) on <self:ModelBuilder> */
6335 var10 = self->attrs[COLOR_nitc__loader__ModelBuilder___last_loader_error].val; /* _last_loader_error on <self:ModelBuilder> */
6336 var8 = var10;
6337 RET_LABEL9:(void)0;
6338 }
6339 }
6340 var_le = var8;
6341 if (var_le == NULL) {
6342 var11 = 0; /* is null */
6343 } else {
6344 var11 = 1; /* arg is null and recv is not */
6345 }
6346 if (0) {
6347 { /* Inline kernel$Object$!= (var_le,((val*)NULL)) on <var_le:nullable String> */
6348 var_other14 = ((val*)NULL);
6349 {
6350 var15 = ((short int(*)(val* self, val* p0))(var_le->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_le, var_other14); /* == on <var_le:nullable String(String)>*/
6351 }
6352 var16 = !var15;
6353 var12 = var16;
6354 goto RET_LABEL13;
6355 RET_LABEL13:(void)0;
6356 }
6357 var11 = var12;
6358 }
6359 if (var11){
6360 {
6361 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
6362 var19 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
6363 if (unlikely(var19 == NULL)) {
6364 if(catchStack.cursor >= 0){
6365 longjmp(catchStack.envs[catchStack.cursor], 1);
6366 }
6367 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6368 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
6369 fatal_exit(1);
6370 }
6371 var17 = var19;
6372 RET_LABEL18:(void)0;
6373 }
6374 }
6375 {
6376 var20 = nitc___nitc__ToolContext___error(var17, ((val*)NULL), var_le);
6377 }
6378 } else {
6379 {
6380 var21 = core__file___Text___file_exists(var_filename);
6381 }
6382 if (var21){
6383 {
6384 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
6385 var24 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
6386 if (unlikely(var24 == NULL)) {
6387 if(catchStack.cursor >= 0){
6388 longjmp(catchStack.envs[catchStack.cursor], 1);
6389 }
6390 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6391 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
6392 fatal_exit(1);
6393 }
6394 var22 = var24;
6395 RET_LABEL23:(void)0;
6396 }
6397 }
6398 if (unlikely(varonce==NULL)) {
6399 var25 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
6400 if (likely(varonce26!=NULL)) {
6401 var27 = varonce26;
6402 } else {
6403 var28 = "Error: `";
6404 var30 = (val*)(8l<<2|1);
6405 var31 = (val*)(8l<<2|1);
6406 var32 = (val*)((long)(0)<<2|3);
6407 var33 = (val*)((long)(0)<<2|3);
6408 var29 = core__flat___CString___to_s_unsafe(var28, var30, var31, var32, var33);
6409 var27 = var29;
6410 varonce26 = var27;
6411 }
6412 ((struct instance_core__NativeArray*)var25)->values[0]=var27;
6413 if (likely(varonce34!=NULL)) {
6414 var35 = varonce34;
6415 } else {
6416 var36 = "` is not a Nit source file.";
6417 var38 = (val*)(27l<<2|1);
6418 var39 = (val*)(27l<<2|1);
6419 var40 = (val*)((long)(0)<<2|3);
6420 var41 = (val*)((long)(0)<<2|3);
6421 var37 = core__flat___CString___to_s_unsafe(var36, var38, var39, var40, var41);
6422 var35 = var37;
6423 varonce34 = var35;
6424 }
6425 ((struct instance_core__NativeArray*)var25)->values[2]=var35;
6426 } else {
6427 var25 = varonce;
6428 varonce = NULL;
6429 }
6430 ((struct instance_core__NativeArray*)var25)->values[1]=var_filename;
6431 {
6432 var42 = ((val*(*)(val* self))(var25->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var25); /* native_to_s on <var25:NativeArray[String]>*/
6433 }
6434 varonce = var25;
6435 {
6436 var43 = nitc___nitc__ToolContext___error(var22, ((val*)NULL), var42);
6437 }
6438 } else {
6439 {
6440 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
6441 var46 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
6442 if (unlikely(var46 == NULL)) {
6443 if(catchStack.cursor >= 0){
6444 longjmp(catchStack.envs[catchStack.cursor], 1);
6445 }
6446 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6447 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
6448 fatal_exit(1);
6449 }
6450 var44 = var46;
6451 RET_LABEL45:(void)0;
6452 }
6453 }
6454 if (unlikely(varonce47==NULL)) {
6455 var48 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
6456 if (likely(varonce49!=NULL)) {
6457 var50 = varonce49;
6458 } else {
6459 var51 = "Error: cannot find module `";
6460 var53 = (val*)(27l<<2|1);
6461 var54 = (val*)(27l<<2|1);
6462 var55 = (val*)((long)(0)<<2|3);
6463 var56 = (val*)((long)(0)<<2|3);
6464 var52 = core__flat___CString___to_s_unsafe(var51, var53, var54, var55, var56);
6465 var50 = var52;
6466 varonce49 = var50;
6467 }
6468 ((struct instance_core__NativeArray*)var48)->values[0]=var50;
6469 if (likely(varonce57!=NULL)) {
6470 var58 = varonce57;
6471 } else {
6472 var59 = "`.";
6473 var61 = (val*)(2l<<2|1);
6474 var62 = (val*)(2l<<2|1);
6475 var63 = (val*)((long)(0)<<2|3);
6476 var64 = (val*)((long)(0)<<2|3);
6477 var60 = core__flat___CString___to_s_unsafe(var59, var61, var62, var63, var64);
6478 var58 = var60;
6479 varonce57 = var58;
6480 }
6481 ((struct instance_core__NativeArray*)var48)->values[2]=var58;
6482 } else {
6483 var48 = varonce47;
6484 varonce47 = NULL;
6485 }
6486 ((struct instance_core__NativeArray*)var48)->values[1]=var_filename;
6487 {
6488 var65 = ((val*(*)(val* self))(var48->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var48); /* native_to_s on <var48:NativeArray[String]>*/
6489 }
6490 varonce47 = var48;
6491 {
6492 var66 = nitc___nitc__ToolContext___error(var44, ((val*)NULL), var65);
6493 }
6494 }
6495 }
6496 var = ((val*)NULL);
6497 goto RET_LABEL;
6498 } else {
6499 }
6500 {
6501 var67 = nitc__loader___MModule___load(var_mmodule, self);
6502 }
6503 var = var67;
6504 goto RET_LABEL;
6505 RET_LABEL:;
6506 return var;
6507 }
6508 /* method loader$ModelBuilder$build_a_mmodule for (self: ModelBuilder, nullable MGroup, AModule) */
6509 void nitc__loader___ModelBuilder___build_a_mmodule(val* self, val* p0, val* p1) {
6510 val* var_mgroup /* var mgroup: nullable MGroup */;
6511 val* var_nmodule /* var nmodule: AModule */;
6512 val* var /* : nullable MModule */;
6513 val* var2 /* : nullable MModule */;
6514 val* var_mmodule /* var mmodule: nullable MModule */;
6515 short int var3 /* : Bool */;
6516 short int var4 /* : Bool */;
6517 val* var_other /* var other: nullable Object */;
6518 short int var6 /* : Bool */;
6519 short int var7 /* : Bool */;
6520 val* var8 /* : nullable AModuledecl */;
6521 val* var10 /* : nullable AModuledecl */;
6522 val* var_decl /* var decl: nullable AModuledecl */;
6523 short int var11 /* : Bool */;
6524 short int var12 /* : Bool */;
6525 short int var14 /* : Bool */;
6526 short int var15 /* : Bool */;
6527 val* var16 /* : AModuleName */;
6528 val* var18 /* : AModuleName */;
6529 val* var19 /* : TId */;
6530 val* var21 /* : TId */;
6531 val* var22 /* : String */;
6532 val* var_decl_name /* var decl_name: String */;
6533 val* var23 /* : String */;
6534 val* var25 /* : String */;
6535 short int var26 /* : Bool */;
6536 short int var28 /* : Bool */;
6537 short int var29 /* : Bool */;
6538 val* var30 /* : AModuleName */;
6539 val* var32 /* : AModuleName */;
6540 static val* varonce;
6541 val* var33 /* : String */;
6542 char* var34 /* : CString */;
6543 val* var35 /* : String */;
6544 val* var36 /* : nullable Int */;
6545 val* var37 /* : nullable Int */;
6546 val* var38 /* : nullable Bool */;
6547 val* var39 /* : nullable Bool */;
6548 val* var41 /* : NativeArray[String] */;
6549 static val* varonce40;
6550 static val* varonce42;
6551 val* var43 /* : String */;
6552 char* var44 /* : CString */;
6553 val* var45 /* : String */;
6554 val* var46 /* : nullable Int */;
6555 val* var47 /* : nullable Int */;
6556 val* var48 /* : nullable Bool */;
6557 val* var49 /* : nullable Bool */;
6558 static val* varonce50;
6559 val* var51 /* : String */;
6560 char* var52 /* : CString */;
6561 val* var53 /* : String */;
6562 val* var54 /* : nullable Int */;
6563 val* var55 /* : nullable Int */;
6564 val* var56 /* : nullable Bool */;
6565 val* var57 /* : nullable Bool */;
6566 static val* varonce58;
6567 val* var59 /* : String */;
6568 char* var60 /* : CString */;
6569 val* var61 /* : String */;
6570 val* var62 /* : nullable Int */;
6571 val* var63 /* : nullable Int */;
6572 val* var64 /* : nullable Bool */;
6573 val* var65 /* : nullable Bool */;
6574 val* var66 /* : String */;
6575 val* var68 /* : String */;
6576 val* var69 /* : String */;
6577 short int var70 /* : Bool */;
6578 short int var71 /* : Bool */;
6579 short int var73 /* : Bool */;
6580 short int var74 /* : Bool */;
6581 val* var75 /* : Model */;
6582 val* var77 /* : Model */;
6583 val* var78 /* : String */;
6584 val* var80 /* : String */;
6585 val* var81 /* : nullable Array[MModule] */;
6586 val* var_others /* var others: nullable Array[MModule] */;
6587 short int var82 /* : Bool */;
6588 short int var83 /* : Bool */;
6589 short int var85 /* : Bool */;
6590 short int var86 /* : Bool */;
6591 val* var_ /* var : Array[MModule] */;
6592 val* var87 /* : IndexedIterator[nullable Object] */;
6593 val* var_88 /* var : IndexedIterator[MModule] */;
6594 short int var89 /* : Bool */;
6595 val* var90 /* : nullable Object */;
6596 val* var_other91 /* var other: MModule */;
6597 short int var92 /* : Bool */;
6598 short int var93 /* : Bool */;
6599 short int var94 /* : Bool */;
6600 short int var95 /* : Bool */;
6601 short int var97 /* : Bool */;
6602 short int var98 /* : Bool */;
6603 short int var_99 /* var : Bool */;
6604 val* var100 /* : HashMap[MModule, AModule] */;
6605 val* var102 /* : HashMap[MModule, AModule] */;
6606 short int var103 /* : Bool */;
6607 short int var_104 /* var : Bool */;
6608 val* var105 /* : nullable MGroup */;
6609 val* var107 /* : nullable MGroup */;
6610 short int var108 /* : Bool */;
6611 short int var109 /* : Bool */;
6612 short int var111 /* : Bool */;
6613 short int var112 /* : Bool */;
6614 short int var_113 /* var : Bool */;
6615 val* var114 /* : nullable MGroup */;
6616 val* var116 /* : nullable MGroup */;
6617 val* var117 /* : MPackage */;
6618 val* var119 /* : MPackage */;
6619 val* var120 /* : MPackage */;
6620 val* var122 /* : MPackage */;
6621 short int var123 /* : Bool */;
6622 val* var_other125 /* var other: nullable Object */;
6623 short int var126 /* : Bool */;
6624 short int var128 /* : Bool */;
6625 short int var129 /* : Bool */;
6626 short int var130 /* : Bool */;
6627 short int var132 /* : Bool */;
6628 short int var134 /* : Bool */;
6629 val* var_node /* var node: ANode */;
6630 val* var135 /* : AModuleName */;
6631 val* var137 /* : AModuleName */;
6632 val* var139 /* : NativeArray[String] */;
6633 static val* varonce138;
6634 static val* varonce140;
6635 val* var141 /* : String */;
6636 char* var142 /* : CString */;
6637 val* var143 /* : String */;
6638 val* var144 /* : nullable Int */;
6639 val* var145 /* : nullable Int */;
6640 val* var146 /* : nullable Bool */;
6641 val* var147 /* : nullable Bool */;
6642 static val* varonce148;
6643 val* var149 /* : String */;
6644 char* var150 /* : CString */;
6645 val* var151 /* : String */;
6646 val* var152 /* : nullable Int */;
6647 val* var153 /* : nullable Int */;
6648 val* var154 /* : nullable Bool */;
6649 val* var155 /* : nullable Bool */;
6650 static val* varonce156;
6651 val* var157 /* : String */;
6652 char* var158 /* : CString */;
6653 val* var159 /* : String */;
6654 val* var160 /* : nullable Int */;
6655 val* var161 /* : nullable Int */;
6656 val* var162 /* : nullable Bool */;
6657 val* var163 /* : nullable Bool */;
6658 val* var164 /* : String */;
6659 val* var165 /* : Location */;
6660 val* var167 /* : Location */;
6661 val* var168 /* : String */;
6662 val* var169 /* : String */;
6663 val* var170 /* : Array[AModule] */;
6664 val* var172 /* : Array[AModule] */;
6665 val* var173 /* : HashMap[MModule, AModule] */;
6666 val* var175 /* : HashMap[MModule, AModule] */;
6667 val* var176 /* : Location */;
6668 val* var178 /* : Location */;
6669 val* var179 /* : nullable SourceFile */;
6670 val* var181 /* : nullable SourceFile */;
6671 val* var_source /* var source: nullable SourceFile */;
6672 short int var182 /* : Bool */;
6673 short int var183 /* : Bool */;
6674 short int var185 /* : Bool */;
6675 short int var186 /* : Bool */;
6676 val* var187 /* : nullable MModule */;
6677 val* var189 /* : nullable MModule */;
6678 short int var190 /* : Bool */;
6679 short int var191 /* : Bool */;
6680 short int var193 /* : Bool */;
6681 short int var195 /* : Bool */;
6682 short int var197 /* : Bool */;
6683 short int var198 /* : Bool */;
6684 short int var200 /* : Bool */;
6685 short int var201 /* : Bool */;
6686 val* var202 /* : nullable ADoc */;
6687 val* var204 /* : nullable ADoc */;
6688 val* var_ndoc /* var ndoc: nullable ADoc */;
6689 short int var205 /* : Bool */;
6690 short int var206 /* : Bool */;
6691 short int var208 /* : Bool */;
6692 short int var209 /* : Bool */;
6693 val* var210 /* : MDoc */;
6694 val* var_mdoc /* var mdoc: MDoc */;
6695 static val* varonce213;
6696 val* var214 /* : String */;
6697 char* var215 /* : CString */;
6698 val* var216 /* : String */;
6699 val* var217 /* : nullable Int */;
6700 val* var218 /* : nullable Int */;
6701 val* var219 /* : nullable Bool */;
6702 val* var220 /* : nullable Bool */;
6703 val* var221 /* : Array[AAnnotation] */;
6704 short int var222 /* : Bool */;
6705 short int var223 /* : Bool */;
6706 static val* varonce225;
6707 val* var226 /* : String */;
6708 char* var227 /* : CString */;
6709 val* var228 /* : String */;
6710 val* var229 /* : nullable Int */;
6711 val* var230 /* : nullable Int */;
6712 val* var231 /* : nullable Bool */;
6713 val* var232 /* : nullable Bool */;
6714 val* var233 /* : Array[AAnnotation] */;
6715 short int var234 /* : Bool */;
6716 short int var235 /* : Bool */;
6717 var_mgroup = p0;
6718 var_nmodule = p1;
6719 {
6720 { /* Inline loader$AModule$mmodule (var_nmodule) on <var_nmodule:AModule> */
6721 var2 = var_nmodule->attrs[COLOR_nitc__loader__AModule___mmodule].val; /* _mmodule on <var_nmodule:AModule> */
6722 var = var2;
6723 RET_LABEL1:(void)0;
6724 }
6725 }
6726 var_mmodule = var;
6727 if (var_mmodule == NULL) {
6728 var3 = 0; /* is null */
6729 } else {
6730 var3 = 1; /* arg is null and recv is not */
6731 }
6732 if (0) {
6733 { /* Inline kernel$Object$!= (var_mmodule,((val*)NULL)) on <var_mmodule:nullable MModule> */
6734 var_other = ((val*)NULL);
6735 {
6736 var6 = ((short int(*)(val* self, val* p0))(var_mmodule->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mmodule, var_other); /* == on <var_mmodule:nullable MModule(MModule)>*/
6737 }
6738 var7 = !var6;
6739 var4 = var7;
6740 goto RET_LABEL5;
6741 RET_LABEL5:(void)0;
6742 }
6743 var3 = var4;
6744 }
6745 if (unlikely(!var3)) {
6746 if(catchStack.cursor >= 0){
6747 longjmp(catchStack.envs[catchStack.cursor], 1);
6748 }
6749 PRINT_ERROR("Runtime error: %s", "Assert failed");
6750 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 773);
6751 fatal_exit(1);
6752 }
6753 {
6754 { /* Inline parser_nodes$AModule$n_moduledecl (var_nmodule) on <var_nmodule:AModule> */
6755 var10 = var_nmodule->attrs[COLOR_nitc__parser_nodes__AModule___n_moduledecl].val; /* _n_moduledecl on <var_nmodule:AModule> */
6756 var8 = var10;
6757 RET_LABEL9:(void)0;
6758 }
6759 }
6760 var_decl = var8;
6761 if (var_decl == NULL) {
6762 var11 = 0; /* is null */
6763 } else {
6764 var11 = 1; /* arg is null and recv is not */
6765 }
6766 if (0) {
6767 { /* Inline kernel$Object$!= (var_decl,((val*)NULL)) on <var_decl:nullable AModuledecl> */
6768 var_other = ((val*)NULL);
6769 {
6770 var14 = ((short int(*)(val* self, val* p0))(var_decl->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_decl, var_other); /* == on <var_decl:nullable AModuledecl(AModuledecl)>*/
6771 }
6772 var15 = !var14;
6773 var12 = var15;
6774 goto RET_LABEL13;
6775 RET_LABEL13:(void)0;
6776 }
6777 var11 = var12;
6778 }
6779 if (var11){
6780 {
6781 { /* Inline parser_nodes$AModuledecl$n_name (var_decl) on <var_decl:nullable AModuledecl(AModuledecl)> */
6782 var18 = var_decl->attrs[COLOR_nitc__parser_nodes__AModuledecl___n_name].val; /* _n_name on <var_decl:nullable AModuledecl(AModuledecl)> */
6783 if (unlikely(var18 == NULL)) {
6784 if(catchStack.cursor >= 0){
6785 longjmp(catchStack.envs[catchStack.cursor], 1);
6786 }
6787 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
6788 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1149);
6789 fatal_exit(1);
6790 }
6791 var16 = var18;
6792 RET_LABEL17:(void)0;
6793 }
6794 }
6795 {
6796 { /* Inline parser_nodes$AModuleName$n_id (var16) on <var16:AModuleName> */
6797 var21 = var16->attrs[COLOR_nitc__parser_nodes__AModuleName___n_id].val; /* _n_id on <var16:AModuleName> */
6798 if (unlikely(var21 == NULL)) {
6799 if(catchStack.cursor >= 0){
6800 longjmp(catchStack.envs[catchStack.cursor], 1);
6801 }
6802 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
6803 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2919);
6804 fatal_exit(1);
6805 }
6806 var19 = var21;
6807 RET_LABEL20:(void)0;
6808 }
6809 }
6810 {
6811 var22 = nitc__lexer_work___Token___text(var19);
6812 }
6813 var_decl_name = var22;
6814 {
6815 { /* Inline mmodule$MModule$name (var_mmodule) on <var_mmodule:nullable MModule(MModule)> */
6816 var25 = var_mmodule->attrs[COLOR_nitc__mmodule__MModule___name].val; /* _name on <var_mmodule:nullable MModule(MModule)> */
6817 if (unlikely(var25 == NULL)) {
6818 if(catchStack.cursor >= 0){
6819 longjmp(catchStack.envs[catchStack.cursor], 1);
6820 }
6821 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
6822 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 100);
6823 fatal_exit(1);
6824 }
6825 var23 = var25;
6826 RET_LABEL24:(void)0;
6827 }
6828 }
6829 {
6830 { /* Inline kernel$Object$!= (var_decl_name,var23) on <var_decl_name:String> */
6831 var_other = var23;
6832 {
6833 var28 = ((short int(*)(val* self, val* p0))(var_decl_name->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_decl_name, var_other); /* == on <var_decl_name:String>*/
6834 }
6835 var29 = !var28;
6836 var26 = var29;
6837 goto RET_LABEL27;
6838 RET_LABEL27:(void)0;
6839 }
6840 }
6841 if (var26){
6842 {
6843 { /* Inline parser_nodes$AModuledecl$n_name (var_decl) on <var_decl:nullable AModuledecl(AModuledecl)> */
6844 var32 = var_decl->attrs[COLOR_nitc__parser_nodes__AModuledecl___n_name].val; /* _n_name on <var_decl:nullable AModuledecl(AModuledecl)> */
6845 if (unlikely(var32 == NULL)) {
6846 if(catchStack.cursor >= 0){
6847 longjmp(catchStack.envs[catchStack.cursor], 1);
6848 }
6849 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
6850 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1149);
6851 fatal_exit(1);
6852 }
6853 var30 = var32;
6854 RET_LABEL31:(void)0;
6855 }
6856 }
6857 if (likely(varonce!=NULL)) {
6858 var33 = varonce;
6859 } else {
6860 var34 = "module-name-mismatch";
6861 var36 = (val*)(20l<<2|1);
6862 var37 = (val*)(20l<<2|1);
6863 var38 = (val*)((long)(0)<<2|3);
6864 var39 = (val*)((long)(0)<<2|3);
6865 var35 = core__flat___CString___to_s_unsafe(var34, var36, var37, var38, var39);
6866 var33 = var35;
6867 varonce = var33;
6868 }
6869 if (unlikely(varonce40==NULL)) {
6870 var41 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
6871 if (likely(varonce42!=NULL)) {
6872 var43 = varonce42;
6873 } else {
6874 var44 = "Error: module name mismatch; declared ";
6875 var46 = (val*)(38l<<2|1);
6876 var47 = (val*)(38l<<2|1);
6877 var48 = (val*)((long)(0)<<2|3);
6878 var49 = (val*)((long)(0)<<2|3);
6879 var45 = core__flat___CString___to_s_unsafe(var44, var46, var47, var48, var49);
6880 var43 = var45;
6881 varonce42 = var43;
6882 }
6883 ((struct instance_core__NativeArray*)var41)->values[0]=var43;
6884 if (likely(varonce50!=NULL)) {
6885 var51 = varonce50;
6886 } else {
6887 var52 = " file named ";
6888 var54 = (val*)(12l<<2|1);
6889 var55 = (val*)(12l<<2|1);
6890 var56 = (val*)((long)(0)<<2|3);
6891 var57 = (val*)((long)(0)<<2|3);
6892 var53 = core__flat___CString___to_s_unsafe(var52, var54, var55, var56, var57);
6893 var51 = var53;
6894 varonce50 = var51;
6895 }
6896 ((struct instance_core__NativeArray*)var41)->values[2]=var51;
6897 if (likely(varonce58!=NULL)) {
6898 var59 = varonce58;
6899 } else {
6900 var60 = ".";
6901 var62 = (val*)(1l<<2|1);
6902 var63 = (val*)(1l<<2|1);
6903 var64 = (val*)((long)(0)<<2|3);
6904 var65 = (val*)((long)(0)<<2|3);
6905 var61 = core__flat___CString___to_s_unsafe(var60, var62, var63, var64, var65);
6906 var59 = var61;
6907 varonce58 = var59;
6908 }
6909 ((struct instance_core__NativeArray*)var41)->values[4]=var59;
6910 } else {
6911 var41 = varonce40;
6912 varonce40 = NULL;
6913 }
6914 ((struct instance_core__NativeArray*)var41)->values[1]=var_decl_name;
6915 {
6916 { /* Inline mmodule$MModule$name (var_mmodule) on <var_mmodule:nullable MModule(MModule)> */
6917 var68 = var_mmodule->attrs[COLOR_nitc__mmodule__MModule___name].val; /* _name on <var_mmodule:nullable MModule(MModule)> */
6918 if (unlikely(var68 == NULL)) {
6919 if(catchStack.cursor >= 0){
6920 longjmp(catchStack.envs[catchStack.cursor], 1);
6921 }
6922 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
6923 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 100);
6924 fatal_exit(1);
6925 }
6926 var66 = var68;
6927 RET_LABEL67:(void)0;
6928 }
6929 }
6930 ((struct instance_core__NativeArray*)var41)->values[3]=var66;
6931 {
6932 var69 = ((val*(*)(val* self))(var41->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var41); /* native_to_s on <var41:NativeArray[String]>*/
6933 }
6934 varonce40 = var41;
6935 {
6936 nitc___nitc__ModelBuilder___warning(self, var30, var33, var69); /* Direct call modelbuilder_base$ModelBuilder$warning on <self:ModelBuilder>*/
6937 }
6938 } else {
6939 }
6940 } else {
6941 }
6942 if (var_mgroup == NULL) {
6943 var70 = 0; /* is null */
6944 } else {
6945 var70 = 1; /* arg is null and recv is not */
6946 }
6947 if (0) {
6948 { /* Inline kernel$Object$!= (var_mgroup,((val*)NULL)) on <var_mgroup:nullable MGroup> */
6949 var_other = ((val*)NULL);
6950 {
6951 var73 = ((short int(*)(val* self, val* p0))(var_mgroup->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mgroup, var_other); /* == on <var_mgroup:nullable MGroup(MGroup)>*/
6952 }
6953 var74 = !var73;
6954 var71 = var74;
6955 goto RET_LABEL72;
6956 RET_LABEL72:(void)0;
6957 }
6958 var70 = var71;
6959 }
6960 if (var70){
6961 {
6962 { /* Inline modelbuilder_base$ModelBuilder$model (self) on <self:ModelBuilder> */
6963 var77 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
6964 if (unlikely(var77 == NULL)) {
6965 if(catchStack.cursor >= 0){
6966 longjmp(catchStack.envs[catchStack.cursor], 1);
6967 }
6968 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
6969 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 44);
6970 fatal_exit(1);
6971 }
6972 var75 = var77;
6973 RET_LABEL76:(void)0;
6974 }
6975 }
6976 {
6977 { /* Inline mmodule$MModule$name (var_mmodule) on <var_mmodule:nullable MModule(MModule)> */
6978 var80 = var_mmodule->attrs[COLOR_nitc__mmodule__MModule___name].val; /* _name on <var_mmodule:nullable MModule(MModule)> */
6979 if (unlikely(var80 == NULL)) {
6980 if(catchStack.cursor >= 0){
6981 longjmp(catchStack.envs[catchStack.cursor], 1);
6982 }
6983 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
6984 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 100);
6985 fatal_exit(1);
6986 }
6987 var78 = var80;
6988 RET_LABEL79:(void)0;
6989 }
6990 }
6991 {
6992 var81 = nitc__mmodule___Model___get_mmodules_by_name(var75, var78);
6993 }
6994 var_others = var81;
6995 if (var_others == NULL) {
6996 var82 = 0; /* is null */
6997 } else {
6998 var82 = 1; /* arg is null and recv is not */
6999 }
7000 if (0) {
7001 { /* Inline kernel$Object$!= (var_others,((val*)NULL)) on <var_others:nullable Array[MModule]> */
7002 var_other = ((val*)NULL);
7003 {
7004 var85 = ((short int(*)(val* self, val* p0))(var_others->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_others, var_other); /* == on <var_others:nullable Array[MModule](Array[MModule])>*/
7005 }
7006 var86 = !var85;
7007 var83 = var86;
7008 goto RET_LABEL84;
7009 RET_LABEL84:(void)0;
7010 }
7011 var82 = var83;
7012 }
7013 if (var82){
7014 var_ = var_others;
7015 {
7016 var87 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
7017 }
7018 var_88 = var87;
7019 for(;;) {
7020 {
7021 var89 = ((short int(*)(val* self))((((long)var_88&3)?class_info[((long)var_88&3)]:var_88->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_88); /* is_ok on <var_88:IndexedIterator[MModule]>*/
7022 }
7023 if (var89){
7024 } else {
7025 goto BREAK_label;
7026 }
7027 {
7028 var90 = ((val*(*)(val* self))((((long)var_88&3)?class_info[((long)var_88&3)]:var_88->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_88); /* item on <var_88:IndexedIterator[MModule]>*/
7029 }
7030 var_other91 = var90;
7031 {
7032 { /* Inline kernel$Object$!= (var_other91,var_mmodule) on <var_other91:MModule> */
7033 var_other = var_mmodule;
7034 {
7035 var97 = ((short int(*)(val* self, val* p0))(var_other91->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_other91, var_other); /* == on <var_other91:MModule>*/
7036 }
7037 var98 = !var97;
7038 var95 = var98;
7039 goto RET_LABEL96;
7040 RET_LABEL96:(void)0;
7041 }
7042 }
7043 var_99 = var95;
7044 if (var95){
7045 {
7046 { /* Inline loader$ModelBuilder$mmodule2nmodule (self) on <self:ModelBuilder> */
7047 var102 = self->attrs[COLOR_nitc__loader__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on <self:ModelBuilder> */
7048 if (unlikely(var102 == NULL)) {
7049 if(catchStack.cursor >= 0){
7050 longjmp(catchStack.envs[catchStack.cursor], 1);
7051 }
7052 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule");
7053 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 1094);
7054 fatal_exit(1);
7055 }
7056 var100 = var102;
7057 RET_LABEL101:(void)0;
7058 }
7059 }
7060 {
7061 var103 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var100, var_mmodule);
7062 }
7063 var94 = var103;
7064 } else {
7065 var94 = var_99;
7066 }
7067 var_104 = var94;
7068 if (var94){
7069 {
7070 { /* Inline mmodule$MModule$mgroup (var_other91) on <var_other91:MModule> */
7071 var107 = var_other91->attrs[COLOR_nitc__mmodule__MModule___mgroup].val; /* _mgroup on <var_other91:MModule> */
7072 var105 = var107;
7073 RET_LABEL106:(void)0;
7074 }
7075 }
7076 if (var105 == NULL) {
7077 var108 = 0; /* is null */
7078 } else {
7079 var108 = 1; /* arg is null and recv is not */
7080 }
7081 if (0) {
7082 { /* Inline kernel$Object$!= (var105,((val*)NULL)) on <var105:nullable MGroup> */
7083 var_other = ((val*)NULL);
7084 {
7085 var111 = ((short int(*)(val* self, val* p0))(var105->class->vft[COLOR_core__kernel__Object___61d_61d]))(var105, var_other); /* == on <var105:nullable MGroup(MGroup)>*/
7086 }
7087 var112 = !var111;
7088 var109 = var112;
7089 goto RET_LABEL110;
7090 RET_LABEL110:(void)0;
7091 }
7092 var108 = var109;
7093 }
7094 var93 = var108;
7095 } else {
7096 var93 = var_104;
7097 }
7098 var_113 = var93;
7099 if (var93){
7100 {
7101 { /* Inline mmodule$MModule$mgroup (var_other91) on <var_other91:MModule> */
7102 var116 = var_other91->attrs[COLOR_nitc__mmodule__MModule___mgroup].val; /* _mgroup on <var_other91:MModule> */
7103 var114 = var116;
7104 RET_LABEL115:(void)0;
7105 }
7106 }
7107 if (var114 == NULL) {
7108 if(catchStack.cursor >= 0){
7109 longjmp(catchStack.envs[catchStack.cursor], 1);
7110 }
7111 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7112 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 788);
7113 fatal_exit(1);
7114 } else {
7115 { /* Inline mpackage$MGroup$mpackage (var114) on <var114:nullable MGroup> */
7116 if (unlikely(var114 == NULL)) {
7117 if(catchStack.cursor >= 0){
7118 longjmp(catchStack.envs[catchStack.cursor], 1);
7119 }
7120 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7121 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 76);
7122 fatal_exit(1);
7123 }
7124 var119 = var114->attrs[COLOR_nitc__mpackage__MGroup___mpackage].val; /* _mpackage on <var114:nullable MGroup> */
7125 if (unlikely(var119 == NULL)) {
7126 if(catchStack.cursor >= 0){
7127 longjmp(catchStack.envs[catchStack.cursor], 1);
7128 }
7129 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpackage");
7130 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 76);
7131 fatal_exit(1);
7132 }
7133 var117 = var119;
7134 RET_LABEL118:(void)0;
7135 }
7136 }
7137 {
7138 { /* Inline mpackage$MGroup$mpackage (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
7139 var122 = var_mgroup->attrs[COLOR_nitc__mpackage__MGroup___mpackage].val; /* _mpackage on <var_mgroup:nullable MGroup(MGroup)> */
7140 if (unlikely(var122 == NULL)) {
7141 if(catchStack.cursor >= 0){
7142 longjmp(catchStack.envs[catchStack.cursor], 1);
7143 }
7144 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpackage");
7145 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 76);
7146 fatal_exit(1);
7147 }
7148 var120 = var122;
7149 RET_LABEL121:(void)0;
7150 }
7151 }
7152 {
7153 { /* Inline kernel$Object$== (var117,var120) on <var117:MPackage> */
7154 var_other125 = var120;
7155 {
7156 { /* Inline kernel$Object$is_same_instance (var117,var_other125) on <var117:MPackage> */
7157 var128 = var117 == var_other125;
7158 var126 = var128;
7159 goto RET_LABEL127;
7160 RET_LABEL127:(void)0;
7161 }
7162 }
7163 var123 = var126;
7164 goto RET_LABEL124;
7165 RET_LABEL124:(void)0;
7166 }
7167 }
7168 var92 = var123;
7169 } else {
7170 var92 = var_113;
7171 }
7172 if (var92){
7173 if (var_decl == NULL) {
7174 var129 = 1; /* is null */
7175 } else {
7176 var129 = 0; /* arg is null but recv is not */
7177 }
7178 if (0) {
7179 { /* Inline kernel$Object$== (var_decl,((val*)NULL)) on <var_decl:nullable AModuledecl> */
7180 var_other125 = ((val*)NULL);
7181 {
7182 { /* Inline kernel$Object$is_same_instance (var_decl,var_other125) on <var_decl:nullable AModuledecl(AModuledecl)> */
7183 var134 = var_decl == var_other125;
7184 var132 = var134;
7185 goto RET_LABEL133;
7186 RET_LABEL133:(void)0;
7187 }
7188 }
7189 var130 = var132;
7190 goto RET_LABEL131;
7191 RET_LABEL131:(void)0;
7192 }
7193 var129 = var130;
7194 }
7195 if (var129){
7196 var_node = var_nmodule;
7197 } else {
7198 {
7199 { /* Inline parser_nodes$AModuledecl$n_name (var_decl) on <var_decl:nullable AModuledecl(AModuledecl)> */
7200 var137 = var_decl->attrs[COLOR_nitc__parser_nodes__AModuledecl___n_name].val; /* _n_name on <var_decl:nullable AModuledecl(AModuledecl)> */
7201 if (unlikely(var137 == NULL)) {
7202 if(catchStack.cursor >= 0){
7203 longjmp(catchStack.envs[catchStack.cursor], 1);
7204 }
7205 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
7206 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1149);
7207 fatal_exit(1);
7208 }
7209 var135 = var137;
7210 RET_LABEL136:(void)0;
7211 }
7212 }
7213 var_node = var135;
7214 }
7215 if (unlikely(varonce138==NULL)) {
7216 var139 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
7217 if (likely(varonce140!=NULL)) {
7218 var141 = varonce140;
7219 } else {
7220 var142 = "Error: a module named `";
7221 var144 = (val*)(23l<<2|1);
7222 var145 = (val*)(23l<<2|1);
7223 var146 = (val*)((long)(0)<<2|3);
7224 var147 = (val*)((long)(0)<<2|3);
7225 var143 = core__flat___CString___to_s_unsafe(var142, var144, var145, var146, var147);
7226 var141 = var143;
7227 varonce140 = var141;
7228 }
7229 ((struct instance_core__NativeArray*)var139)->values[0]=var141;
7230 if (likely(varonce148!=NULL)) {
7231 var149 = varonce148;
7232 } else {
7233 var150 = "` already exists at ";
7234 var152 = (val*)(20l<<2|1);
7235 var153 = (val*)(20l<<2|1);
7236 var154 = (val*)((long)(0)<<2|3);
7237 var155 = (val*)((long)(0)<<2|3);
7238 var151 = core__flat___CString___to_s_unsafe(var150, var152, var153, var154, var155);
7239 var149 = var151;
7240 varonce148 = var149;
7241 }
7242 ((struct instance_core__NativeArray*)var139)->values[2]=var149;
7243 if (likely(varonce156!=NULL)) {
7244 var157 = varonce156;
7245 } else {
7246 var158 = ".";
7247 var160 = (val*)(1l<<2|1);
7248 var161 = (val*)(1l<<2|1);
7249 var162 = (val*)((long)(0)<<2|3);
7250 var163 = (val*)((long)(0)<<2|3);
7251 var159 = core__flat___CString___to_s_unsafe(var158, var160, var161, var162, var163);
7252 var157 = var159;
7253 varonce156 = var157;
7254 }
7255 ((struct instance_core__NativeArray*)var139)->values[4]=var157;
7256 } else {
7257 var139 = varonce138;
7258 varonce138 = NULL;
7259 }
7260 {
7261 var164 = nitc___nitc__MModule___nitc__model_base__MEntity__full_name(var_other91);
7262 }
7263 ((struct instance_core__NativeArray*)var139)->values[1]=var164;
7264 {
7265 { /* Inline mmodule$MModule$location (var_other91) on <var_other91:MModule> */
7266 var167 = var_other91->attrs[COLOR_nitc__mmodule__MModule___location].val; /* _location on <var_other91:MModule> */
7267 if (unlikely(var167 == NULL)) {
7268 if(catchStack.cursor >= 0){
7269 longjmp(catchStack.envs[catchStack.cursor], 1);
7270 }
7271 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
7272 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 103);
7273 fatal_exit(1);
7274 }
7275 var165 = var167;
7276 RET_LABEL166:(void)0;
7277 }
7278 }
7279 {
7280 var168 = ((val*(*)(val* self))(var165->class->vft[COLOR_core__abstract_text__Object__to_s]))(var165); /* to_s on <var165:Location>*/
7281 }
7282 ((struct instance_core__NativeArray*)var139)->values[3]=var168;
7283 {
7284 var169 = ((val*(*)(val* self))(var139->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var139); /* native_to_s on <var139:NativeArray[String]>*/
7285 }
7286 varonce138 = var139;
7287 {
7288 nitc___nitc__ModelBuilder___error(self, var_node, var169); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
7289 }
7290 goto BREAK_label;
7291 } else {
7292 }
7293 {
7294 ((void(*)(val* self))((((long)var_88&3)?class_info[((long)var_88&3)]:var_88->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_88); /* next on <var_88:IndexedIterator[MModule]>*/
7295 }
7296 }
7297 BREAK_label: (void)0;
7298 {
7299 ((void(*)(val* self))((((long)var_88&3)?class_info[((long)var_88&3)]:var_88->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_88); /* finish on <var_88:IndexedIterator[MModule]>*/
7300 }
7301 } else {
7302 }
7303 } else {
7304 }
7305 {
7306 { /* Inline loader$ModelBuilder$nmodules (self) on <self:ModelBuilder> */
7307 var172 = self->attrs[COLOR_nitc__loader__ModelBuilder___nmodules].val; /* _nmodules on <self:ModelBuilder> */
7308 if (unlikely(var172 == NULL)) {
7309 if(catchStack.cursor >= 0){
7310 longjmp(catchStack.envs[catchStack.cursor], 1);
7311 }
7312 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _nmodules");
7313 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 1091);
7314 fatal_exit(1);
7315 }
7316 var170 = var172;
7317 RET_LABEL171:(void)0;
7318 }
7319 }
7320 {
7321 core___core__Array___core__abstract_collection__SimpleCollection__add(var170, var_nmodule); /* Direct call array$Array$add on <var170:Array[AModule]>*/
7322 }
7323 {
7324 { /* Inline loader$ModelBuilder$mmodule2nmodule (self) on <self:ModelBuilder> */
7325 var175 = self->attrs[COLOR_nitc__loader__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on <self:ModelBuilder> */
7326 if (unlikely(var175 == NULL)) {
7327 if(catchStack.cursor >= 0){
7328 longjmp(catchStack.envs[catchStack.cursor], 1);
7329 }
7330 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule");
7331 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 1094);
7332 fatal_exit(1);
7333 }
7334 var173 = var175;
7335 RET_LABEL174:(void)0;
7336 }
7337 }
7338 {
7339 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var173, var_mmodule, var_nmodule); /* Direct call hash_collection$HashMap$[]= on <var173:HashMap[MModule, AModule]>*/
7340 }
7341 {
7342 { /* Inline parser_nodes$ANode$location (var_nmodule) on <var_nmodule:AModule> */
7343 var178 = var_nmodule->attrs[COLOR_nitc__parser_nodes__ANode___location].val; /* _location on <var_nmodule:AModule> */
7344 if (unlikely(var178 == NULL)) {
7345 if(catchStack.cursor >= 0){
7346 longjmp(catchStack.envs[catchStack.cursor], 1);
7347 }
7348 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
7349 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 25);
7350 fatal_exit(1);
7351 }
7352 var176 = var178;
7353 RET_LABEL177:(void)0;
7354 }
7355 }
7356 {
7357 { /* Inline location$Location$file (var176) on <var176:Location> */
7358 var181 = var176->attrs[COLOR_nitc__location__Location___file].val; /* _file on <var176:Location> */
7359 var179 = var181;
7360 RET_LABEL180:(void)0;
7361 }
7362 }
7363 var_source = var179;
7364 if (var_source == NULL) {
7365 var182 = 0; /* is null */
7366 } else {
7367 var182 = 1; /* arg is null and recv is not */
7368 }
7369 if (0) {
7370 { /* Inline kernel$Object$!= (var_source,((val*)NULL)) on <var_source:nullable SourceFile> */
7371 var_other = ((val*)NULL);
7372 {
7373 var185 = ((short int(*)(val* self, val* p0))(var_source->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_source, var_other); /* == on <var_source:nullable SourceFile(SourceFile)>*/
7374 }
7375 var186 = !var185;
7376 var183 = var186;
7377 goto RET_LABEL184;
7378 RET_LABEL184:(void)0;
7379 }
7380 var182 = var183;
7381 }
7382 if (var182){
7383 {
7384 { /* Inline loader$SourceFile$mmodule (var_source) on <var_source:nullable SourceFile(SourceFile)> */
7385 var189 = var_source->attrs[COLOR_nitc__loader__SourceFile___mmodule].val; /* _mmodule on <var_source:nullable SourceFile(SourceFile)> */
7386 var187 = var189;
7387 RET_LABEL188:(void)0;
7388 }
7389 }
7390 if (var187 == NULL) {
7391 var190 = 1; /* is null */
7392 } else {
7393 var190 = 0; /* arg is null but recv is not */
7394 }
7395 if (0) {
7396 { /* Inline kernel$Object$== (var187,((val*)NULL)) on <var187:nullable MModule> */
7397 var_other125 = ((val*)NULL);
7398 {
7399 { /* Inline kernel$Object$is_same_instance (var187,var_other125) on <var187:nullable MModule(MModule)> */
7400 var195 = var187 == var_other125;
7401 var193 = var195;
7402 goto RET_LABEL194;
7403 RET_LABEL194:(void)0;
7404 }
7405 }
7406 var191 = var193;
7407 goto RET_LABEL192;
7408 RET_LABEL192:(void)0;
7409 }
7410 var190 = var191;
7411 }
7412 if (unlikely(!var190)) {
7413 if(catchStack.cursor >= 0){
7414 longjmp(catchStack.envs[catchStack.cursor], 1);
7415 }
7416 PRINT_ERROR("Runtime error: %s", "Assert failed");
7417 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 802);
7418 fatal_exit(1);
7419 }
7420 {
7421 { /* Inline loader$SourceFile$mmodule= (var_source,var_mmodule) on <var_source:nullable SourceFile(SourceFile)> */
7422 var_source->attrs[COLOR_nitc__loader__SourceFile___mmodule].val = var_mmodule; /* _mmodule on <var_source:nullable SourceFile(SourceFile)> */
7423 RET_LABEL196:(void)0;
7424 }
7425 }
7426 } else {
7427 }
7428 if (var_decl == NULL) {
7429 var197 = 0; /* is null */
7430 } else {
7431 var197 = 1; /* arg is null and recv is not */
7432 }
7433 if (0) {
7434 { /* Inline kernel$Object$!= (var_decl,((val*)NULL)) on <var_decl:nullable AModuledecl> */
7435 var_other = ((val*)NULL);
7436 {
7437 var200 = ((short int(*)(val* self, val* p0))(var_decl->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_decl, var_other); /* == on <var_decl:nullable AModuledecl(AModuledecl)>*/
7438 }
7439 var201 = !var200;
7440 var198 = var201;
7441 goto RET_LABEL199;
7442 RET_LABEL199:(void)0;
7443 }
7444 var197 = var198;
7445 }
7446 if (var197){
7447 {
7448 { /* Inline parser_nodes$ADefinition$n_doc (var_decl) on <var_decl:nullable AModuledecl(AModuledecl)> */
7449 var204 = var_decl->attrs[COLOR_nitc__parser_nodes__ADefinition___n_doc].val; /* _n_doc on <var_decl:nullable AModuledecl(AModuledecl)> */
7450 var202 = var204;
7451 RET_LABEL203:(void)0;
7452 }
7453 }
7454 var_ndoc = var202;
7455 if (var_ndoc == NULL) {
7456 var205 = 0; /* is null */
7457 } else {
7458 var205 = 1; /* arg is null and recv is not */
7459 }
7460 if (0) {
7461 { /* Inline kernel$Object$!= (var_ndoc,((val*)NULL)) on <var_ndoc:nullable ADoc> */
7462 var_other = ((val*)NULL);
7463 {
7464 var208 = ((short int(*)(val* self, val* p0))(var_ndoc->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_ndoc, var_other); /* == on <var_ndoc:nullable ADoc(ADoc)>*/
7465 }
7466 var209 = !var208;
7467 var206 = var209;
7468 goto RET_LABEL207;
7469 RET_LABEL207:(void)0;
7470 }
7471 var205 = var206;
7472 }
7473 if (var205){
7474 {
7475 var210 = nitc__modelbuilder_base___ADoc___to_mdoc(var_ndoc);
7476 }
7477 var_mdoc = var210;
7478 {
7479 { /* Inline mdoc$MEntity$mdoc= (var_mmodule,var_mdoc) on <var_mmodule:nullable MModule(MModule)> */
7480 var_mmodule->attrs[COLOR_nitc__mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on <var_mmodule:nullable MModule(MModule)> */
7481 RET_LABEL211:(void)0;
7482 }
7483 }
7484 {
7485 { /* Inline mdoc$MDoc$original_mentity= (var_mdoc,var_mmodule) on <var_mdoc:MDoc> */
7486 var_mdoc->attrs[COLOR_nitc__mdoc__MDoc___original_mentity].val = var_mmodule; /* _original_mentity on <var_mdoc:MDoc> */
7487 RET_LABEL212:(void)0;
7488 }
7489 }
7490 } else {
7491 }
7492 if (likely(varonce213!=NULL)) {
7493 var214 = varonce213;
7494 } else {
7495 var215 = "test_suite";
7496 var217 = (val*)(10l<<2|1);
7497 var218 = (val*)(10l<<2|1);
7498 var219 = (val*)((long)(0)<<2|3);
7499 var220 = (val*)((long)(0)<<2|3);
7500 var216 = core__flat___CString___to_s_unsafe(var215, var217, var218, var219, var220);
7501 var214 = var216;
7502 varonce213 = var214;
7503 }
7504 {
7505 var221 = nitc___nitc__Prod___get_annotations(var_decl, var214);
7506 }
7507 {
7508 var222 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var221);
7509 }
7510 var223 = !var222;
7511 {
7512 { /* Inline mmodule$MModule$is_test_suite= (var_mmodule,var223) on <var_mmodule:nullable MModule(MModule)> */
7513 var_mmodule->attrs[COLOR_nitc__mmodule__MModule___is_test_suite].s = var223; /* _is_test_suite on <var_mmodule:nullable MModule(MModule)> */
7514 RET_LABEL224:(void)0;
7515 }
7516 }
7517 if (likely(varonce225!=NULL)) {
7518 var226 = varonce225;
7519 } else {
7520 var227 = "generated";
7521 var229 = (val*)(9l<<2|1);
7522 var230 = (val*)(9l<<2|1);
7523 var231 = (val*)((long)(0)<<2|3);
7524 var232 = (val*)((long)(0)<<2|3);
7525 var228 = core__flat___CString___to_s_unsafe(var227, var229, var230, var231, var232);
7526 var226 = var228;
7527 varonce225 = var226;
7528 }
7529 {
7530 var233 = nitc___nitc__Prod___get_annotations(var_decl, var226);
7531 }
7532 {
7533 var234 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var233);
7534 }
7535 var235 = !var234;
7536 {
7537 { /* Inline mmodule$MModule$is_generated= (var_mmodule,var235) on <var_mmodule:nullable MModule(MModule)> */
7538 var_mmodule->attrs[COLOR_nitc__mmodule__MModule___is_generated].s = var235; /* _is_generated on <var_mmodule:nullable MModule(MModule)> */
7539 RET_LABEL236:(void)0;
7540 }
7541 }
7542 } else {
7543 }
7544 RET_LABEL:;
7545 }
7546 /* method loader$ModelBuilder$seach_module_by_amodule_name for (self: ModelBuilder, AModuleName, nullable MGroup): nullable MModule */
7547 val* nitc__loader___ModelBuilder___seach_module_by_amodule_name(val* self, val* p0, val* p1) {
7548 val* var /* : nullable MModule */;
7549 val* var_n_name /* var n_name: AModuleName */;
7550 val* var_mgroup /* var mgroup: nullable MGroup */;
7551 val* var1 /* : TId */;
7552 val* var3 /* : TId */;
7553 val* var4 /* : String */;
7554 val* var_mod_name /* var mod_name: String */;
7555 val* var5 /* : nullable TQuad */;
7556 val* var7 /* : nullable TQuad */;
7557 short int var8 /* : Bool */;
7558 short int var9 /* : Bool */;
7559 val* var_other /* var other: nullable Object */;
7560 short int var11 /* : Bool */;
7561 short int var12 /* : Bool */;
7562 val* var13 /* : ANodes[TId] */;
7563 val* var15 /* : ANodes[TId] */;
7564 short int var16 /* : Bool */;
7565 val* var17 /* : nullable MModule */;
7566 short int var18 /* : Bool */;
7567 short int var19 /* : Bool */;
7568 short int var21 /* : Bool */;
7569 short int var22 /* : Bool */;
7570 val* var23 /* : MPackage */;
7571 val* var25 /* : MPackage */;
7572 val* var26 /* : nullable MGroup */;
7573 val* var28 /* : nullable MGroup */;
7574 val* var_r /* var r: nullable MGroup */;
7575 short int var29 /* : Bool */;
7576 short int var30 /* : Bool */;
7577 short int var32 /* : Bool */;
7578 short int var33 /* : Bool */;
7579 val* var34 /* : Array[MModule] */;
7580 val* var_res /* var res: Array[MModule] */;
7581 val* var35 /* : Array[MModule] */;
7582 val* var_ /* var : Array[MModule] */;
7583 val* var_36 /* var : Array[MModule] */;
7584 val* var37 /* : IndexedIterator[nullable Object] */;
7585 val* var_38 /* var : IndexedIterator[MModule] */;
7586 short int var39 /* : Bool */;
7587 val* var40 /* : nullable Object */;
7588 val* var_x /* var x: MModule */;
7589 short int var41 /* : Bool */;
7590 short int var42 /* : Bool */;
7591 long var43 /* : Int */;
7592 long var45 /* : Int */;
7593 short int var46 /* : Bool */;
7594 short int var48 /* : Bool */;
7595 int cltype;
7596 int idtype;
7597 const char* var_class_name;
7598 short int var49 /* : Bool */;
7599 val* var50 /* : NativeArray[String] */;
7600 static val* varonce;
7601 static val* varonce51;
7602 val* var52 /* : String */;
7603 char* var53 /* : CString */;
7604 val* var54 /* : String */;
7605 val* var55 /* : nullable Int */;
7606 val* var56 /* : nullable Int */;
7607 val* var57 /* : nullable Bool */;
7608 val* var58 /* : nullable Bool */;
7609 static val* varonce59;
7610 val* var60 /* : String */;
7611 char* var61 /* : CString */;
7612 val* var62 /* : String */;
7613 val* var63 /* : nullable Int */;
7614 val* var64 /* : nullable Int */;
7615 val* var65 /* : nullable Bool */;
7616 val* var66 /* : nullable Bool */;
7617 static val* varonce67;
7618 val* var68 /* : String */;
7619 char* var69 /* : CString */;
7620 val* var70 /* : String */;
7621 val* var71 /* : nullable Int */;
7622 val* var72 /* : nullable Int */;
7623 val* var73 /* : nullable Bool */;
7624 val* var74 /* : nullable Bool */;
7625 val* var75 /* : Array[String] */;
7626 val* var_76 /* var : Array[String] */;
7627 val* var_77 /* var : Array[MModule] */;
7628 val* var78 /* : IndexedIterator[nullable Object] */;
7629 val* var_79 /* var : IndexedIterator[MModule] */;
7630 short int var80 /* : Bool */;
7631 val* var82 /* : nullable Object */;
7632 val* var_x83 /* var x: MModule */;
7633 val* var84 /* : String */;
7634 val* var85 /* : nullable String */;
7635 val* var86 /* : String */;
7636 static val* varonce87;
7637 val* var88 /* : String */;
7638 char* var89 /* : CString */;
7639 val* var90 /* : String */;
7640 val* var91 /* : nullable Int */;
7641 val* var92 /* : nullable Int */;
7642 val* var93 /* : nullable Bool */;
7643 val* var94 /* : nullable Bool */;
7644 val* var95 /* : String */;
7645 val* var96 /* : String */;
7646 val* var97 /* : nullable Object */;
7647 val* var98 /* : ANodes[TId] */;
7648 val* var100 /* : ANodes[TId] */;
7649 val* var101 /* : nullable Object */;
7650 val* var102 /* : String */;
7651 val* var_root_name /* var root_name: String */;
7652 val* var103 /* : Array[String] */;
7653 val* var105 /* : Array[String] */;
7654 val* var106 /* : ArraySet[MGroup] */;
7655 val* var_roots /* var roots: ArraySet[MGroup] */;
7656 short int var107 /* : Bool */;
7657 val* var109 /* : NativeArray[String] */;
7658 static val* varonce108;
7659 static val* varonce110;
7660 val* var111 /* : String */;
7661 char* var112 /* : CString */;
7662 val* var113 /* : String */;
7663 val* var114 /* : nullable Int */;
7664 val* var115 /* : nullable Int */;
7665 val* var116 /* : nullable Bool */;
7666 val* var117 /* : nullable Bool */;
7667 static val* varonce118;
7668 val* var119 /* : String */;
7669 char* var120 /* : CString */;
7670 val* var121 /* : String */;
7671 val* var122 /* : nullable Int */;
7672 val* var123 /* : nullable Int */;
7673 val* var124 /* : nullable Bool */;
7674 val* var125 /* : nullable Bool */;
7675 static val* varonce126;
7676 val* var127 /* : String */;
7677 char* var128 /* : CString */;
7678 val* var129 /* : String */;
7679 val* var130 /* : nullable Int */;
7680 val* var131 /* : nullable Int */;
7681 val* var132 /* : nullable Bool */;
7682 val* var133 /* : nullable Bool */;
7683 val* var134 /* : Array[String] */;
7684 val* var136 /* : Array[String] */;
7685 static val* varonce137;
7686 val* var138 /* : String */;
7687 char* var139 /* : CString */;
7688 val* var140 /* : String */;
7689 val* var141 /* : nullable Int */;
7690 val* var142 /* : nullable Int */;
7691 val* var143 /* : nullable Bool */;
7692 val* var144 /* : nullable Bool */;
7693 val* var145 /* : String */;
7694 val* var146 /* : String */;
7695 val* var147 /* : ArraySet[MModule] */;
7696 val* var_res148 /* var res: ArraySet[MModule] */;
7697 val* var_149 /* var : ArraySet[MGroup] */;
7698 val* var150 /* : Iterator[nullable Object] */;
7699 val* var_151 /* var : Iterator[MGroup] */;
7700 short int var152 /* : Bool */;
7701 val* var154 /* : nullable Object */;
7702 val* var_r155 /* var r: MGroup */;
7703 val* var156 /* : Array[MModule] */;
7704 val* var_root_res /* var root_res: Array[MModule] */;
7705 val* var_157 /* var : Array[MModule] */;
7706 val* var158 /* : IndexedIterator[nullable Object] */;
7707 val* var_159 /* var : IndexedIterator[MModule] */;
7708 short int var160 /* : Bool */;
7709 val* var162 /* : nullable Object */;
7710 val* var_x163 /* var x: MModule */;
7711 short int var164 /* : Bool */;
7712 short int var165 /* : Bool */;
7713 long var166 /* : Int */;
7714 short int var167 /* : Bool */;
7715 short int var169 /* : Bool */;
7716 int cltype170;
7717 int idtype171;
7718 const char* var_class_name172;
7719 short int var173 /* : Bool */;
7720 val* var175 /* : NativeArray[String] */;
7721 static val* varonce174;
7722 static val* varonce176;
7723 val* var177 /* : String */;
7724 char* var178 /* : CString */;
7725 val* var179 /* : String */;
7726 val* var180 /* : nullable Int */;
7727 val* var181 /* : nullable Int */;
7728 val* var182 /* : nullable Bool */;
7729 val* var183 /* : nullable Bool */;
7730 static val* varonce184;
7731 val* var185 /* : String */;
7732 char* var186 /* : CString */;
7733 val* var187 /* : String */;
7734 val* var188 /* : nullable Int */;
7735 val* var189 /* : nullable Int */;
7736 val* var190 /* : nullable Bool */;
7737 val* var191 /* : nullable Bool */;
7738 static val* varonce192;
7739 val* var193 /* : String */;
7740 char* var194 /* : CString */;
7741 val* var195 /* : String */;
7742 val* var196 /* : nullable Int */;
7743 val* var197 /* : nullable Int */;
7744 val* var198 /* : nullable Bool */;
7745 val* var199 /* : nullable Bool */;
7746 val* var200 /* : Array[String] */;
7747 val* var_201 /* var : Array[String] */;
7748 val* var_202 /* var : ArraySet[MModule] */;
7749 val* var203 /* : Iterator[nullable Object] */;
7750 val* var_204 /* var : Iterator[MModule] */;
7751 short int var205 /* : Bool */;
7752 val* var207 /* : nullable Object */;
7753 val* var_x208 /* var x: MModule */;
7754 val* var209 /* : String */;
7755 val* var210 /* : nullable String */;
7756 val* var211 /* : String */;
7757 static val* varonce212;
7758 val* var213 /* : String */;
7759 char* var214 /* : CString */;
7760 val* var215 /* : String */;
7761 val* var216 /* : nullable Int */;
7762 val* var217 /* : nullable Int */;
7763 val* var218 /* : nullable Bool */;
7764 val* var219 /* : nullable Bool */;
7765 val* var220 /* : String */;
7766 val* var221 /* : String */;
7767 val* var222 /* : nullable Object */;
7768 val* var224 /* : NativeArray[String] */;
7769 static val* varonce223;
7770 static val* varonce225;
7771 val* var226 /* : String */;
7772 char* var227 /* : CString */;
7773 val* var228 /* : String */;
7774 val* var229 /* : nullable Int */;
7775 val* var230 /* : nullable Int */;
7776 val* var231 /* : nullable Bool */;
7777 val* var232 /* : nullable Bool */;
7778 static val* varonce233;
7779 val* var234 /* : String */;
7780 char* var235 /* : CString */;
7781 val* var236 /* : String */;
7782 val* var237 /* : nullable Int */;
7783 val* var238 /* : nullable Int */;
7784 val* var239 /* : nullable Bool */;
7785 val* var240 /* : nullable Bool */;
7786 static val* varonce241;
7787 val* var242 /* : String */;
7788 char* var243 /* : CString */;
7789 val* var244 /* : String */;
7790 val* var245 /* : nullable Int */;
7791 val* var246 /* : nullable Int */;
7792 val* var247 /* : nullable Bool */;
7793 val* var248 /* : nullable Bool */;
7794 static val* varonce249;
7795 val* var250 /* : String */;
7796 char* var251 /* : CString */;
7797 val* var252 /* : String */;
7798 val* var253 /* : nullable Int */;
7799 val* var254 /* : nullable Int */;
7800 val* var255 /* : nullable Bool */;
7801 val* var256 /* : nullable Bool */;
7802 val* var257 /* : Array[String] */;
7803 val* var259 /* : Array[String] */;
7804 static val* varonce260;
7805 val* var261 /* : String */;
7806 char* var262 /* : CString */;
7807 val* var263 /* : String */;
7808 val* var264 /* : nullable Int */;
7809 val* var265 /* : nullable Int */;
7810 val* var266 /* : nullable Bool */;
7811 val* var267 /* : nullable Bool */;
7812 val* var268 /* : String */;
7813 val* var269 /* : String */;
7814 var_n_name = p0;
7815 var_mgroup = p1;
7816 {
7817 { /* Inline parser_nodes$AModuleName$n_id (var_n_name) on <var_n_name:AModuleName> */
7818 var3 = var_n_name->attrs[COLOR_nitc__parser_nodes__AModuleName___n_id].val; /* _n_id on <var_n_name:AModuleName> */
7819 if (unlikely(var3 == NULL)) {
7820 if(catchStack.cursor >= 0){
7821 longjmp(catchStack.envs[catchStack.cursor], 1);
7822 }
7823 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
7824 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2919);
7825 fatal_exit(1);
7826 }
7827 var1 = var3;
7828 RET_LABEL2:(void)0;
7829 }
7830 }
7831 {
7832 var4 = nitc__lexer_work___Token___text(var1);
7833 }
7834 var_mod_name = var4;
7835 {
7836 { /* Inline parser_nodes$AModuleName$n_quad (var_n_name) on <var_n_name:AModuleName> */
7837 var7 = var_n_name->attrs[COLOR_nitc__parser_nodes__AModuleName___n_quad].val; /* _n_quad on <var_n_name:AModuleName> */
7838 var5 = var7;
7839 RET_LABEL6:(void)0;
7840 }
7841 }
7842 if (var5 == NULL) {
7843 var8 = 0; /* is null */
7844 } else {
7845 var8 = 1; /* arg is null and recv is not */
7846 }
7847 if (0) {
7848 { /* Inline kernel$Object$!= (var5,((val*)NULL)) on <var5:nullable TQuad> */
7849 var_other = ((val*)NULL);
7850 {
7851 var11 = ((short int(*)(val* self, val* p0))(var5->class->vft[COLOR_core__kernel__Object___61d_61d]))(var5, var_other); /* == on <var5:nullable TQuad(TQuad)>*/
7852 }
7853 var12 = !var11;
7854 var9 = var12;
7855 goto RET_LABEL10;
7856 RET_LABEL10:(void)0;
7857 }
7858 var8 = var9;
7859 }
7860 if (var8){
7861 var_mgroup = ((val*)NULL);
7862 } else {
7863 }
7864 {
7865 { /* Inline parser_nodes$AModuleName$n_path (var_n_name) on <var_n_name:AModuleName> */
7866 var15 = var_n_name->attrs[COLOR_nitc__parser_nodes__AModuleName___n_path].val; /* _n_path on <var_n_name:AModuleName> */
7867 if (unlikely(var15 == NULL)) {
7868 if(catchStack.cursor >= 0){
7869 longjmp(catchStack.envs[catchStack.cursor], 1);
7870 }
7871 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_path");
7872 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2916);
7873 fatal_exit(1);
7874 }
7875 var13 = var15;
7876 RET_LABEL14:(void)0;
7877 }
7878 }
7879 {
7880 var16 = nitc___nitc__ANodes___core__abstract_collection__Collection__is_empty(var13);
7881 }
7882 if (var16){
7883 {
7884 var17 = nitc__loader___ModelBuilder___search_mmodule_by_name(self, var_n_name, var_mgroup, var_mod_name);
7885 }
7886 var = var17;
7887 goto RET_LABEL;
7888 } else {
7889 }
7890 if (var_mgroup == NULL) {
7891 var18 = 0; /* is null */
7892 } else {
7893 var18 = 1; /* arg is null and recv is not */
7894 }
7895 if (0) {
7896 { /* Inline kernel$Object$!= (var_mgroup,((val*)NULL)) on <var_mgroup:nullable MGroup> */
7897 var_other = ((val*)NULL);
7898 {
7899 var21 = ((short int(*)(val* self, val* p0))(var_mgroup->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mgroup, var_other); /* == on <var_mgroup:nullable MGroup(MGroup)>*/
7900 }
7901 var22 = !var21;
7902 var19 = var22;
7903 goto RET_LABEL20;
7904 RET_LABEL20:(void)0;
7905 }
7906 var18 = var19;
7907 }
7908 if (var18){
7909 {
7910 { /* Inline mpackage$MGroup$mpackage (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
7911 var25 = var_mgroup->attrs[COLOR_nitc__mpackage__MGroup___mpackage].val; /* _mpackage on <var_mgroup:nullable MGroup(MGroup)> */
7912 if (unlikely(var25 == NULL)) {
7913 if(catchStack.cursor >= 0){
7914 longjmp(catchStack.envs[catchStack.cursor], 1);
7915 }
7916 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpackage");
7917 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 76);
7918 fatal_exit(1);
7919 }
7920 var23 = var25;
7921 RET_LABEL24:(void)0;
7922 }
7923 }
7924 {
7925 { /* Inline mpackage$MPackage$root (var23) on <var23:MPackage> */
7926 var28 = var23->attrs[COLOR_nitc__mpackage__MPackage___root].val; /* _root on <var23:MPackage> */
7927 var26 = var28;
7928 RET_LABEL27:(void)0;
7929 }
7930 }
7931 var_r = var26;
7932 if (var_r == NULL) {
7933 var29 = 0; /* is null */
7934 } else {
7935 var29 = 1; /* arg is null and recv is not */
7936 }
7937 if (0) {
7938 { /* Inline kernel$Object$!= (var_r,((val*)NULL)) on <var_r:nullable MGroup> */
7939 var_other = ((val*)NULL);
7940 {
7941 var32 = ((short int(*)(val* self, val* p0))(var_r->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_r, var_other); /* == on <var_r:nullable MGroup(MGroup)>*/
7942 }
7943 var33 = !var32;
7944 var30 = var33;
7945 goto RET_LABEL31;
7946 RET_LABEL31:(void)0;
7947 }
7948 var29 = var30;
7949 }
7950 if (unlikely(!var29)) {
7951 if(catchStack.cursor >= 0){
7952 longjmp(catchStack.envs[catchStack.cursor], 1);
7953 }
7954 PRINT_ERROR("Runtime error: %s", "Assert failed");
7955 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 841);
7956 fatal_exit(1);
7957 }
7958 {
7959 nitc__loader___ModelBuilder___scan_group(self, var_r); /* Direct call loader$ModelBuilder$scan_group on <self:ModelBuilder>*/
7960 }
7961 {
7962 var34 = nitc__loader___MGroup___mmodules_by_name(var_r, var_mod_name);
7963 }
7964 var_res = var34;
7965 var35 = NEW_core__Array(&type_core__Array__nitc__MModule);
7966 {
7967 core___core__Array___with_capacity(var35, 1l); /* Direct call array$Array$with_capacity on <var35:Array[MModule]>*/
7968 }
7969 var_ = var35;
7970 var_36 = var_res;
7971 {
7972 var37 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_36);
7973 }
7974 var_38 = var37;
7975 for(;;) {
7976 {
7977 var39 = ((short int(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_38); /* is_ok on <var_38:IndexedIterator[MModule]>*/
7978 }
7979 if (var39){
7980 } else {
7981 goto BREAK_label;
7982 }
7983 {
7984 var40 = ((val*(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_38); /* item on <var_38:IndexedIterator[MModule]>*/
7985 }
7986 var_x = var40;
7987 {
7988 var41 = nitc__loader___ModelBuilder___match_amodulename(self, var_n_name, var_x);
7989 }
7990 if (var41){
7991 {
7992 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var_x); /* Direct call array$AbstractArray$push on <var_:Array[MModule]>*/
7993 }
7994 } else {
7995 }
7996 {
7997 ((void(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_38); /* next on <var_38:IndexedIterator[MModule]>*/
7998 }
7999 }
8000 BREAK_label: (void)0;
8001 {
8002 ((void(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_38); /* finish on <var_38:IndexedIterator[MModule]>*/
8003 }
8004 var_res = var_;
8005 {
8006 var42 = core___core__Collection___not_empty(var_res);
8007 }
8008 if (var42){
8009 {
8010 { /* Inline array$AbstractArrayRead$length (var_res) on <var_res:Array[MModule]> */
8011 var45 = var_res->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_res:Array[MModule]> */
8012 var43 = var45;
8013 RET_LABEL44:(void)0;
8014 }
8015 }
8016 {
8017 { /* Inline kernel$Int$> (var43,1l) on <var43:Int> */
8018 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
8019 /* <1l:Int> isa OTHER */
8020 var48 = 1; /* easy <1l:Int> isa OTHER*/
8021 if (unlikely(!var48)) {
8022 var_class_name = type_core__Int.name;
8023 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
8024 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
8025 fatal_exit(1);
8026 }
8027 var49 = var43 > 1l;
8028 var46 = var49;
8029 goto RET_LABEL47;
8030 RET_LABEL47:(void)0;
8031 }
8032 }
8033 if (var46){
8034 if (unlikely(varonce==NULL)) {
8035 var50 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
8036 if (likely(varonce51!=NULL)) {
8037 var52 = varonce51;
8038 } else {
8039 var53 = "Error: conflicting module files for `";
8040 var55 = (val*)(37l<<2|1);
8041 var56 = (val*)(37l<<2|1);
8042 var57 = (val*)((long)(0)<<2|3);
8043 var58 = (val*)((long)(0)<<2|3);
8044 var54 = core__flat___CString___to_s_unsafe(var53, var55, var56, var57, var58);
8045 var52 = var54;
8046 varonce51 = var52;
8047 }
8048 ((struct instance_core__NativeArray*)var50)->values[0]=var52;
8049 if (likely(varonce59!=NULL)) {
8050 var60 = varonce59;
8051 } else {
8052 var61 = "`: `";
8053 var63 = (val*)(4l<<2|1);
8054 var64 = (val*)(4l<<2|1);
8055 var65 = (val*)((long)(0)<<2|3);
8056 var66 = (val*)((long)(0)<<2|3);
8057 var62 = core__flat___CString___to_s_unsafe(var61, var63, var64, var65, var66);
8058 var60 = var62;
8059 varonce59 = var60;
8060 }
8061 ((struct instance_core__NativeArray*)var50)->values[2]=var60;
8062 if (likely(varonce67!=NULL)) {
8063 var68 = varonce67;
8064 } else {
8065 var69 = "`";
8066 var71 = (val*)(1l<<2|1);
8067 var72 = (val*)(1l<<2|1);
8068 var73 = (val*)((long)(0)<<2|3);
8069 var74 = (val*)((long)(0)<<2|3);
8070 var70 = core__flat___CString___to_s_unsafe(var69, var71, var72, var73, var74);
8071 var68 = var70;
8072 varonce67 = var68;
8073 }
8074 ((struct instance_core__NativeArray*)var50)->values[4]=var68;
8075 } else {
8076 var50 = varonce;
8077 varonce = NULL;
8078 }
8079 ((struct instance_core__NativeArray*)var50)->values[1]=var_mod_name;
8080 var75 = NEW_core__Array(&type_core__Array__core__String);
8081 {
8082 core___core__Array___with_capacity(var75, 1l); /* Direct call array$Array$with_capacity on <var75:Array[String]>*/
8083 }
8084 var_76 = var75;
8085 var_77 = var_res;
8086 {
8087 var78 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_77);
8088 }
8089 var_79 = var78;
8090 for(;;) {
8091 {
8092 var80 = ((short int(*)(val* self))((((long)var_79&3)?class_info[((long)var_79&3)]:var_79->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_79); /* is_ok on <var_79:IndexedIterator[MModule]>*/
8093 }
8094 if (var80){
8095 } else {
8096 goto BREAK_label81;
8097 }
8098 {
8099 var82 = ((val*(*)(val* self))((((long)var_79&3)?class_info[((long)var_79&3)]:var_79->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_79); /* item on <var_79:IndexedIterator[MModule]>*/
8100 }
8101 var_x83 = var82;
8102 {
8103 var85 = nitc___nitc__MModule___filepath(var_x83);
8104 }
8105 if (var85!=NULL) {
8106 var84 = var85;
8107 } else {
8108 {
8109 var86 = nitc___nitc__MModule___nitc__model_base__MEntity__full_name(var_x83);
8110 }
8111 var84 = var86;
8112 }
8113 {
8114 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_76, var84); /* Direct call array$AbstractArray$push on <var_76:Array[String]>*/
8115 }
8116 {
8117 ((void(*)(val* self))((((long)var_79&3)?class_info[((long)var_79&3)]:var_79->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_79); /* next on <var_79:IndexedIterator[MModule]>*/
8118 }
8119 }
8120 BREAK_label81: (void)0;
8121 {
8122 ((void(*)(val* self))((((long)var_79&3)?class_info[((long)var_79&3)]:var_79->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_79); /* finish on <var_79:IndexedIterator[MModule]>*/
8123 }
8124 if (likely(varonce87!=NULL)) {
8125 var88 = varonce87;
8126 } else {
8127 var89 = "`, `";
8128 var91 = (val*)(4l<<2|1);
8129 var92 = (val*)(4l<<2|1);
8130 var93 = (val*)((long)(0)<<2|3);
8131 var94 = (val*)((long)(0)<<2|3);
8132 var90 = core__flat___CString___to_s_unsafe(var89, var91, var92, var93, var94);
8133 var88 = var90;
8134 varonce87 = var88;
8135 }
8136 {
8137 var95 = core__abstract_text___Collection___join(var_76, var88, ((val*)NULL));
8138 }
8139 ((struct instance_core__NativeArray*)var50)->values[3]=var95;
8140 {
8141 var96 = ((val*(*)(val* self))(var50->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var50); /* native_to_s on <var50:NativeArray[String]>*/
8142 }
8143 varonce = var50;
8144 {
8145 nitc___nitc__ModelBuilder___error(self, var_n_name, var96); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
8146 }
8147 } else {
8148 }
8149 {
8150 var97 = core___core__SequenceRead___Collection__first(var_res);
8151 }
8152 var = var97;
8153 goto RET_LABEL;
8154 } else {
8155 }
8156 } else {
8157 }
8158 {
8159 { /* Inline parser_nodes$AModuleName$n_path (var_n_name) on <var_n_name:AModuleName> */
8160 var100 = var_n_name->attrs[COLOR_nitc__parser_nodes__AModuleName___n_path].val; /* _n_path on <var_n_name:AModuleName> */
8161 if (unlikely(var100 == NULL)) {
8162 if(catchStack.cursor >= 0){
8163 longjmp(catchStack.envs[catchStack.cursor], 1);
8164 }
8165 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_path");
8166 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2916);
8167 fatal_exit(1);
8168 }
8169 var98 = var100;
8170 RET_LABEL99:(void)0;
8171 }
8172 }
8173 {
8174 var101 = core___core__SequenceRead___Collection__first(var98);
8175 }
8176 {
8177 var102 = nitc__lexer_work___Token___text(var101);
8178 }
8179 var_root_name = var102;
8180 {
8181 { /* Inline loader$ModelBuilder$paths (self) on <self:ModelBuilder> */
8182 var105 = self->attrs[COLOR_nitc__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
8183 if (unlikely(var105 == NULL)) {
8184 if(catchStack.cursor >= 0){
8185 longjmp(catchStack.envs[catchStack.cursor], 1);
8186 }
8187 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
8188 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 213);
8189 fatal_exit(1);
8190 }
8191 var103 = var105;
8192 RET_LABEL104:(void)0;
8193 }
8194 }
8195 {
8196 var106 = nitc__loader___ModelBuilder___search_group_in_paths(self, var_root_name, var103);
8197 }
8198 var_roots = var106;
8199 {
8200 var107 = core___core__ArraySet___core__abstract_collection__Collection__is_empty(var_roots);
8201 }
8202 if (var107){
8203 if (unlikely(varonce108==NULL)) {
8204 var109 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
8205 if (likely(varonce110!=NULL)) {
8206 var111 = varonce110;
8207 } else {
8208 var112 = "Error: cannot find `";
8209 var114 = (val*)(20l<<2|1);
8210 var115 = (val*)(20l<<2|1);
8211 var116 = (val*)((long)(0)<<2|3);
8212 var117 = (val*)((long)(0)<<2|3);
8213 var113 = core__flat___CString___to_s_unsafe(var112, var114, var115, var116, var117);
8214 var111 = var113;
8215 varonce110 = var111;
8216 }
8217 ((struct instance_core__NativeArray*)var109)->values[0]=var111;
8218 if (likely(varonce118!=NULL)) {
8219 var119 = varonce118;
8220 } else {
8221 var120 = "`. Tried: ";
8222 var122 = (val*)(10l<<2|1);
8223 var123 = (val*)(10l<<2|1);
8224 var124 = (val*)((long)(0)<<2|3);
8225 var125 = (val*)((long)(0)<<2|3);
8226 var121 = core__flat___CString___to_s_unsafe(var120, var122, var123, var124, var125);
8227 var119 = var121;
8228 varonce118 = var119;
8229 }
8230 ((struct instance_core__NativeArray*)var109)->values[2]=var119;
8231 if (likely(varonce126!=NULL)) {
8232 var127 = varonce126;
8233 } else {
8234 var128 = ".";
8235 var130 = (val*)(1l<<2|1);
8236 var131 = (val*)(1l<<2|1);
8237 var132 = (val*)((long)(0)<<2|3);
8238 var133 = (val*)((long)(0)<<2|3);
8239 var129 = core__flat___CString___to_s_unsafe(var128, var130, var131, var132, var133);
8240 var127 = var129;
8241 varonce126 = var127;
8242 }
8243 ((struct instance_core__NativeArray*)var109)->values[4]=var127;
8244 } else {
8245 var109 = varonce108;
8246 varonce108 = NULL;
8247 }
8248 ((struct instance_core__NativeArray*)var109)->values[1]=var_root_name;
8249 {
8250 { /* Inline loader$ModelBuilder$paths (self) on <self:ModelBuilder> */
8251 var136 = self->attrs[COLOR_nitc__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
8252 if (unlikely(var136 == NULL)) {
8253 if(catchStack.cursor >= 0){
8254 longjmp(catchStack.envs[catchStack.cursor], 1);
8255 }
8256 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
8257 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 213);
8258 fatal_exit(1);
8259 }
8260 var134 = var136;
8261 RET_LABEL135:(void)0;
8262 }
8263 }
8264 if (likely(varonce137!=NULL)) {
8265 var138 = varonce137;
8266 } else {
8267 var139 = ", ";
8268 var141 = (val*)(2l<<2|1);
8269 var142 = (val*)(2l<<2|1);
8270 var143 = (val*)((long)(0)<<2|3);
8271 var144 = (val*)((long)(0)<<2|3);
8272 var140 = core__flat___CString___to_s_unsafe(var139, var141, var142, var143, var144);
8273 var138 = var140;
8274 varonce137 = var138;
8275 }
8276 {
8277 var145 = core__abstract_text___Collection___join(var134, var138, ((val*)NULL));
8278 }
8279 ((struct instance_core__NativeArray*)var109)->values[3]=var145;
8280 {
8281 var146 = ((val*(*)(val* self))(var109->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var109); /* native_to_s on <var109:NativeArray[String]>*/
8282 }
8283 varonce108 = var109;
8284 {
8285 nitc___nitc__ModelBuilder___error(self, var_n_name, var146); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
8286 }
8287 var = ((val*)NULL);
8288 goto RET_LABEL;
8289 } else {
8290 }
8291 var147 = NEW_core__ArraySet(&type_core__ArraySet__nitc__MModule);
8292 {
8293 core___core__ArraySet___core__kernel__Object__init(var147); /* Direct call array$ArraySet$init on <var147:ArraySet[MModule]>*/
8294 }
8295 var_res148 = var147;
8296 var_149 = var_roots;
8297 {
8298 var150 = core___core__ArraySet___core__abstract_collection__Collection__iterator(var_149);
8299 }
8300 var_151 = var150;
8301 for(;;) {
8302 {
8303 var152 = ((short int(*)(val* self))((((long)var_151&3)?class_info[((long)var_151&3)]:var_151->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_151); /* is_ok on <var_151:Iterator[MGroup]>*/
8304 }
8305 if (var152){
8306 } else {
8307 goto BREAK_label153;
8308 }
8309 {
8310 var154 = ((val*(*)(val* self))((((long)var_151&3)?class_info[((long)var_151&3)]:var_151->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_151); /* item on <var_151:Iterator[MGroup]>*/
8311 }
8312 var_r155 = var154;
8313 {
8314 nitc__loader___ModelBuilder___scan_group(self, var_r155); /* Direct call loader$ModelBuilder$scan_group on <self:ModelBuilder>*/
8315 }
8316 {
8317 var156 = nitc__loader___MGroup___mmodules_by_name(var_r155, var_mod_name);
8318 }
8319 var_root_res = var156;
8320 var_157 = var_root_res;
8321 {
8322 var158 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_157);
8323 }
8324 var_159 = var158;
8325 for(;;) {
8326 {
8327 var160 = ((short int(*)(val* self))((((long)var_159&3)?class_info[((long)var_159&3)]:var_159->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_159); /* is_ok on <var_159:IndexedIterator[MModule]>*/
8328 }
8329 if (var160){
8330 } else {
8331 goto BREAK_label161;
8332 }
8333 {
8334 var162 = ((val*(*)(val* self))((((long)var_159&3)?class_info[((long)var_159&3)]:var_159->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_159); /* item on <var_159:IndexedIterator[MModule]>*/
8335 }
8336 var_x163 = var162;
8337 {
8338 var164 = nitc__loader___ModelBuilder___match_amodulename(self, var_n_name, var_x163);
8339 }
8340 if (var164){
8341 {
8342 core___core__ArraySet___core__abstract_collection__SimpleCollection__add(var_res148, var_x163); /* Direct call array$ArraySet$add on <var_res148:ArraySet[MModule]>*/
8343 }
8344 } else {
8345 }
8346 {
8347 ((void(*)(val* self))((((long)var_159&3)?class_info[((long)var_159&3)]:var_159->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_159); /* next on <var_159:IndexedIterator[MModule]>*/
8348 }
8349 }
8350 BREAK_label161: (void)0;
8351 {
8352 ((void(*)(val* self))((((long)var_159&3)?class_info[((long)var_159&3)]:var_159->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_159); /* finish on <var_159:IndexedIterator[MModule]>*/
8353 }
8354 {
8355 ((void(*)(val* self))((((long)var_151&3)?class_info[((long)var_151&3)]:var_151->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_151); /* next on <var_151:Iterator[MGroup]>*/
8356 }
8357 }
8358 BREAK_label153: (void)0;
8359 {
8360 ((void(*)(val* self))((((long)var_151&3)?class_info[((long)var_151&3)]:var_151->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_151); /* finish on <var_151:Iterator[MGroup]>*/
8361 }
8362 {
8363 var165 = core___core__Collection___not_empty(var_res148);
8364 }
8365 if (var165){
8366 {
8367 var166 = core___core__ArraySet___core__abstract_collection__Collection__length(var_res148);
8368 }
8369 {
8370 { /* Inline kernel$Int$> (var166,1l) on <var166:Int> */
8371 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
8372 /* <1l:Int> isa OTHER */
8373 var169 = 1; /* easy <1l:Int> isa OTHER*/
8374 if (unlikely(!var169)) {
8375 var_class_name172 = type_core__Int.name;
8376 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name172);
8377 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
8378 fatal_exit(1);
8379 }
8380 var173 = var166 > 1l;
8381 var167 = var173;
8382 goto RET_LABEL168;
8383 RET_LABEL168:(void)0;
8384 }
8385 }
8386 if (var167){
8387 if (unlikely(varonce174==NULL)) {
8388 var175 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
8389 if (likely(varonce176!=NULL)) {
8390 var177 = varonce176;
8391 } else {
8392 var178 = "Error: conflicting module files for `";
8393 var180 = (val*)(37l<<2|1);
8394 var181 = (val*)(37l<<2|1);
8395 var182 = (val*)((long)(0)<<2|3);
8396 var183 = (val*)((long)(0)<<2|3);
8397 var179 = core__flat___CString___to_s_unsafe(var178, var180, var181, var182, var183);
8398 var177 = var179;
8399 varonce176 = var177;
8400 }
8401 ((struct instance_core__NativeArray*)var175)->values[0]=var177;
8402 if (likely(varonce184!=NULL)) {
8403 var185 = varonce184;
8404 } else {
8405 var186 = "`: `";
8406 var188 = (val*)(4l<<2|1);
8407 var189 = (val*)(4l<<2|1);
8408 var190 = (val*)((long)(0)<<2|3);
8409 var191 = (val*)((long)(0)<<2|3);
8410 var187 = core__flat___CString___to_s_unsafe(var186, var188, var189, var190, var191);
8411 var185 = var187;
8412 varonce184 = var185;
8413 }
8414 ((struct instance_core__NativeArray*)var175)->values[2]=var185;
8415 if (likely(varonce192!=NULL)) {
8416 var193 = varonce192;
8417 } else {
8418 var194 = "`";
8419 var196 = (val*)(1l<<2|1);
8420 var197 = (val*)(1l<<2|1);
8421 var198 = (val*)((long)(0)<<2|3);
8422 var199 = (val*)((long)(0)<<2|3);
8423 var195 = core__flat___CString___to_s_unsafe(var194, var196, var197, var198, var199);
8424 var193 = var195;
8425 varonce192 = var193;
8426 }
8427 ((struct instance_core__NativeArray*)var175)->values[4]=var193;
8428 } else {
8429 var175 = varonce174;
8430 varonce174 = NULL;
8431 }
8432 ((struct instance_core__NativeArray*)var175)->values[1]=var_mod_name;
8433 var200 = NEW_core__Array(&type_core__Array__core__String);
8434 {
8435 core___core__Array___with_capacity(var200, 1l); /* Direct call array$Array$with_capacity on <var200:Array[String]>*/
8436 }
8437 var_201 = var200;
8438 var_202 = var_res148;
8439 {
8440 var203 = core___core__ArraySet___core__abstract_collection__Collection__iterator(var_202);
8441 }
8442 var_204 = var203;
8443 for(;;) {
8444 {
8445 var205 = ((short int(*)(val* self))((((long)var_204&3)?class_info[((long)var_204&3)]:var_204->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_204); /* is_ok on <var_204:Iterator[MModule]>*/
8446 }
8447 if (var205){
8448 } else {
8449 goto BREAK_label206;
8450 }
8451 {
8452 var207 = ((val*(*)(val* self))((((long)var_204&3)?class_info[((long)var_204&3)]:var_204->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_204); /* item on <var_204:Iterator[MModule]>*/
8453 }
8454 var_x208 = var207;
8455 {
8456 var210 = nitc___nitc__MModule___filepath(var_x208);
8457 }
8458 if (var210!=NULL) {
8459 var209 = var210;
8460 } else {
8461 {
8462 var211 = nitc___nitc__MModule___nitc__model_base__MEntity__full_name(var_x208);
8463 }
8464 var209 = var211;
8465 }
8466 {
8467 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_201, var209); /* Direct call array$AbstractArray$push on <var_201:Array[String]>*/
8468 }
8469 {
8470 ((void(*)(val* self))((((long)var_204&3)?class_info[((long)var_204&3)]:var_204->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_204); /* next on <var_204:Iterator[MModule]>*/
8471 }
8472 }
8473 BREAK_label206: (void)0;
8474 {
8475 ((void(*)(val* self))((((long)var_204&3)?class_info[((long)var_204&3)]:var_204->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_204); /* finish on <var_204:Iterator[MModule]>*/
8476 }
8477 if (likely(varonce212!=NULL)) {
8478 var213 = varonce212;
8479 } else {
8480 var214 = "`, `";
8481 var216 = (val*)(4l<<2|1);
8482 var217 = (val*)(4l<<2|1);
8483 var218 = (val*)((long)(0)<<2|3);
8484 var219 = (val*)((long)(0)<<2|3);
8485 var215 = core__flat___CString___to_s_unsafe(var214, var216, var217, var218, var219);
8486 var213 = var215;
8487 varonce212 = var213;
8488 }
8489 {
8490 var220 = core__abstract_text___Collection___join(var_201, var213, ((val*)NULL));
8491 }
8492 ((struct instance_core__NativeArray*)var175)->values[3]=var220;
8493 {
8494 var221 = ((val*(*)(val* self))(var175->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var175); /* native_to_s on <var175:NativeArray[String]>*/
8495 }
8496 varonce174 = var175;
8497 {
8498 nitc___nitc__ModelBuilder___error(self, var_n_name, var221); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
8499 }
8500 } else {
8501 }
8502 {
8503 var222 = core___core__ArraySet___core__abstract_collection__Collection__first(var_res148);
8504 }
8505 var = var222;
8506 goto RET_LABEL;
8507 } else {
8508 }
8509 if (unlikely(varonce223==NULL)) {
8510 var224 = NEW_core__NativeArray((int)7l, &type_core__NativeArray__core__String);
8511 if (likely(varonce225!=NULL)) {
8512 var226 = varonce225;
8513 } else {
8514 var227 = "Error: cannot find module `";
8515 var229 = (val*)(27l<<2|1);
8516 var230 = (val*)(27l<<2|1);
8517 var231 = (val*)((long)(0)<<2|3);
8518 var232 = (val*)((long)(0)<<2|3);
8519 var228 = core__flat___CString___to_s_unsafe(var227, var229, var230, var231, var232);
8520 var226 = var228;
8521 varonce225 = var226;
8522 }
8523 ((struct instance_core__NativeArray*)var224)->values[0]=var226;
8524 if (likely(varonce233!=NULL)) {
8525 var234 = varonce233;
8526 } else {
8527 var235 = "` from `";
8528 var237 = (val*)(8l<<2|1);
8529 var238 = (val*)(8l<<2|1);
8530 var239 = (val*)((long)(0)<<2|3);
8531 var240 = (val*)((long)(0)<<2|3);
8532 var236 = core__flat___CString___to_s_unsafe(var235, var237, var238, var239, var240);
8533 var234 = var236;
8534 varonce233 = var234;
8535 }
8536 ((struct instance_core__NativeArray*)var224)->values[2]=var234;
8537 if (likely(varonce241!=NULL)) {
8538 var242 = varonce241;
8539 } else {
8540 var243 = "`. Tried: ";
8541 var245 = (val*)(10l<<2|1);
8542 var246 = (val*)(10l<<2|1);
8543 var247 = (val*)((long)(0)<<2|3);
8544 var248 = (val*)((long)(0)<<2|3);
8545 var244 = core__flat___CString___to_s_unsafe(var243, var245, var246, var247, var248);
8546 var242 = var244;
8547 varonce241 = var242;
8548 }
8549 ((struct instance_core__NativeArray*)var224)->values[4]=var242;
8550 if (likely(varonce249!=NULL)) {
8551 var250 = varonce249;
8552 } else {
8553 var251 = ".";
8554 var253 = (val*)(1l<<2|1);
8555 var254 = (val*)(1l<<2|1);
8556 var255 = (val*)((long)(0)<<2|3);
8557 var256 = (val*)((long)(0)<<2|3);
8558 var252 = core__flat___CString___to_s_unsafe(var251, var253, var254, var255, var256);
8559 var250 = var252;
8560 varonce249 = var250;
8561 }
8562 ((struct instance_core__NativeArray*)var224)->values[6]=var250;
8563 } else {
8564 var224 = varonce223;
8565 varonce223 = NULL;
8566 }
8567 ((struct instance_core__NativeArray*)var224)->values[1]=var_mod_name;
8568 ((struct instance_core__NativeArray*)var224)->values[3]=var_root_name;
8569 {
8570 { /* Inline loader$ModelBuilder$paths (self) on <self:ModelBuilder> */
8571 var259 = self->attrs[COLOR_nitc__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
8572 if (unlikely(var259 == NULL)) {
8573 if(catchStack.cursor >= 0){
8574 longjmp(catchStack.envs[catchStack.cursor], 1);
8575 }
8576 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
8577 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__loader, 213);
8578 fatal_exit(1);
8579 }
8580 var257 = var259;
8581 RET_LABEL258:(void)0;
8582 }
8583 }
8584 if (likely(varonce260!=NULL)) {
8585 var261 = varonce260;
8586 } else {
8587 var262 = ", ";
8588 var264 = (val*)(2l<<2|1);
8589 var265 = (val*)(2l<<2|1);
8590 var266 = (val*)((long)(0)<<2|3);
8591 var267 = (val*)((long)(0)<<2|3);
8592 var263 = core__flat___CString___to_s_unsafe(var262, var264, var265, var266, var267);
8593 var261 = var263;
8594 varonce260 = var261;
8595 }
8596 {
8597 var268 = core__abstract_text___Collection___join(var257, var261, ((val*)NULL));
8598 }
8599 ((struct instance_core__NativeArray*)var224)->values[5]=var268;
8600 {
8601 var269 = ((val*(*)(val* self))(var224->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var224); /* native_to_s on <var224:NativeArray[String]>*/
8602 }
8603 varonce223 = var224;
8604 {
8605 nitc___nitc__ModelBuilder___error(self, var_n_name, var269); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
8606 }
8607 var = ((val*)NULL);
8608 goto RET_LABEL;
8609 RET_LABEL:;
8610 return var;
8611 }
8612 /* method loader$ModelBuilder$match_amodulename for (self: ModelBuilder, AModuleName, MModule): Bool */
8613 short int nitc__loader___ModelBuilder___match_amodulename(val* self, val* p0, val* p1) {
8614 short int var /* : Bool */;
8615 val* var_n_name /* var n_name: AModuleName */;
8616 val* var_m /* var m: MModule */;
8617 val* var1 /* : nullable MGroup */;
8618 val* var3 /* : nullable MGroup */;
8619 val* var_g /* var g: nullable MGroup */;
8620 val* var4 /* : ANodes[TId] */;
8621 val* var6 /* : ANodes[TId] */;
8622 val* var7 /* : IndexedIterator[ANode] */;
8623 val* var_ /* var : IndexedIterator[TId] */;
8624 val* var8 /* : Iterator[nullable Object] */;
8625 val* var_9 /* var : Iterator[TId] */;
8626 short int var10 /* : Bool */;
8627 val* var11 /* : nullable Object */;
8628 val* var_grp /* var grp: TId */;
8629 short int var12 /* : Bool */;
8630 short int var13 /* : Bool */;
8631 short int var14 /* : Bool */;
8632 val* var_other /* var other: nullable Object */;
8633 short int var16 /* : Bool */;
8634 short int var17 /* : Bool */;
8635 short int var_18 /* var : Bool */;
8636 val* var19 /* : String */;
8637 val* var20 /* : String */;
8638 val* var22 /* : String */;
8639 short int var23 /* : Bool */;
8640 short int var25 /* : Bool */;
8641 short int var26 /* : Bool */;
8642 val* var27 /* : nullable MGroup */;
8643 val* var29 /* : nullable MGroup */;
8644 short int var31 /* : Bool */;
8645 short int var32 /* : Bool */;
8646 short int var34 /* : Bool */;
8647 short int var35 /* : Bool */;
8648 var_n_name = p0;
8649 var_m = p1;
8650 {
8651 { /* Inline mmodule$MModule$mgroup (var_m) on <var_m:MModule> */
8652 var3 = var_m->attrs[COLOR_nitc__mmodule__MModule___mgroup].val; /* _mgroup on <var_m:MModule> */
8653 var1 = var3;
8654 RET_LABEL2:(void)0;
8655 }
8656 }
8657 var_g = var1;
8658 {
8659 { /* Inline parser_nodes$AModuleName$n_path (var_n_name) on <var_n_name:AModuleName> */
8660 var6 = var_n_name->attrs[COLOR_nitc__parser_nodes__AModuleName___n_path].val; /* _n_path on <var_n_name:AModuleName> */
8661 if (unlikely(var6 == NULL)) {
8662 if(catchStack.cursor >= 0){
8663 longjmp(catchStack.envs[catchStack.cursor], 1);
8664 }
8665 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_path");
8666 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2916);
8667 fatal_exit(1);
8668 }
8669 var4 = var6;
8670 RET_LABEL5:(void)0;
8671 }
8672 }
8673 {
8674 var7 = nitc___nitc__ANodes___core__abstract_collection__SequenceRead__reverse_iterator(var4);
8675 }
8676 var_ = var7;
8677 {
8678 var8 = core___core__Iterator___iterator(var_);
8679 }
8680 var_9 = var8;
8681 for(;;) {
8682 {
8683 var10 = ((short int(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_9); /* is_ok on <var_9:Iterator[TId]>*/
8684 }
8685 if (var10){
8686 } else {
8687 goto BREAK_label;
8688 }
8689 {
8690 var11 = ((val*(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_9); /* item on <var_9:Iterator[TId]>*/
8691 }
8692 var_grp = var11;
8693 for(;;) {
8694 if (var_g == NULL) {
8695 var13 = 0; /* is null */
8696 } else {
8697 var13 = 1; /* arg is null and recv is not */
8698 }
8699 if (0) {
8700 { /* Inline kernel$Object$!= (var_g,((val*)NULL)) on <var_g:nullable MGroup> */
8701 var_other = ((val*)NULL);
8702 {
8703 var16 = ((short int(*)(val* self, val* p0))(var_g->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_g, var_other); /* == on <var_g:nullable MGroup(MGroup)>*/
8704 }
8705 var17 = !var16;
8706 var14 = var17;
8707 goto RET_LABEL15;
8708 RET_LABEL15:(void)0;
8709 }
8710 var13 = var14;
8711 }
8712 var_18 = var13;
8713 if (var13){
8714 {
8715 var19 = nitc__lexer_work___Token___text(var_grp);
8716 }
8717 {
8718 { /* Inline mpackage$MGroup$name (var_g) on <var_g:nullable MGroup(MGroup)> */
8719 var22 = var_g->attrs[COLOR_nitc__mpackage__MGroup___name].val; /* _name on <var_g:nullable MGroup(MGroup)> */
8720 if (unlikely(var22 == NULL)) {
8721 if(catchStack.cursor >= 0){
8722 longjmp(catchStack.envs[catchStack.cursor], 1);
8723 }
8724 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
8725 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mpackage, 70);
8726 fatal_exit(1);
8727 }
8728 var20 = var22;
8729 RET_LABEL21:(void)0;
8730 }
8731 }
8732 {
8733 { /* Inline kernel$Object$!= (var19,var20) on <var19:String> */
8734 var_other = var20;
8735 {
8736 var25 = ((short int(*)(val* self, val* p0))(var19->class->vft[COLOR_core__kernel__Object___61d_61d]))(var19, var_other); /* == on <var19:String>*/
8737 }
8738 var26 = !var25;
8739 var23 = var26;
8740 goto RET_LABEL24;
8741 RET_LABEL24:(void)0;
8742 }
8743 }
8744 var12 = var23;
8745 } else {
8746 var12 = var_18;
8747 }
8748 if (var12){
8749 {
8750 { /* Inline mpackage$MGroup$parent (var_g) on <var_g:nullable MGroup(MGroup)> */
8751 var29 = var_g->attrs[COLOR_nitc__mpackage__MGroup___parent].val; /* _parent on <var_g:nullable MGroup(MGroup)> */
8752 var27 = var29;
8753 RET_LABEL28:(void)0;
8754 }
8755 }
8756 var_g = var27;
8757 } else {
8758 goto BREAK_label30;
8759 }
8760 }
8761 BREAK_label30: (void)0;
8762 {
8763 ((void(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_9); /* next on <var_9:Iterator[TId]>*/
8764 }
8765 }
8766 BREAK_label: (void)0;
8767 {
8768 ((void(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_9); /* finish on <var_9:Iterator[TId]>*/
8769 }
8770 if (var_g == NULL) {
8771 var31 = 0; /* is null */
8772 } else {
8773 var31 = 1; /* arg is null and recv is not */
8774 }
8775 if (0) {
8776 { /* Inline kernel$Object$!= (var_g,((val*)NULL)) on <var_g:nullable MGroup> */
8777 var_other = ((val*)NULL);
8778 {
8779 var34 = ((short int(*)(val* self, val* p0))(var_g->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_g, var_other); /* == on <var_g:nullable MGroup(MGroup)>*/
8780 }
8781 var35 = !var34;
8782 var32 = var35;
8783 goto RET_LABEL33;
8784 RET_LABEL33:(void)0;
8785 }
8786 var31 = var32;
8787 }
8788 var = var31;
8789 goto RET_LABEL;
8790 RET_LABEL:;
8791 return var;
8792 }