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