Merge: doc: fixed some typos and other misc. corrections
[nit.git] / c_src / nitc__separate_erasure_compiler.sep.1.c
1 #include "nitc__separate_erasure_compiler.sep.0.h"
2 /* method separate_erasure_compiler$ToolContext$opt_erasure for (self: ToolContext): OptionBool */
3 val* nitc__separate_erasure_compiler___ToolContext___opt_erasure(val* self) {
4 val* var /* : OptionBool */;
5 val* var1 /* : OptionBool */;
6 var1 = self->attrs[COLOR_nitc__separate_erasure_compiler__ToolContext___opt_erasure].val; /* _opt_erasure on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 if(catchStack.cursor >= 0){
9 longjmp(catchStack.envs[catchStack.cursor], 1);
10 }
11 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_erasure");
12 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 22);
13 fatal_exit(1);
14 }
15 var = var1;
16 RET_LABEL:;
17 return var;
18 }
19 /* method separate_erasure_compiler$ToolContext$opt_rta for (self: ToolContext): OptionBool */
20 val* nitc__separate_erasure_compiler___ToolContext___opt_rta(val* self) {
21 val* var /* : OptionBool */;
22 val* var1 /* : OptionBool */;
23 var1 = self->attrs[COLOR_nitc__separate_erasure_compiler__ToolContext___opt_rta].val; /* _opt_rta on <self:ToolContext> */
24 if (unlikely(var1 == NULL)) {
25 if(catchStack.cursor >= 0){
26 longjmp(catchStack.envs[catchStack.cursor], 1);
27 }
28 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_rta");
29 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 24);
30 fatal_exit(1);
31 }
32 var = var1;
33 RET_LABEL:;
34 return var;
35 }
36 /* method separate_erasure_compiler$ToolContext$opt_no_check_erasure_cast for (self: ToolContext): OptionBool */
37 val* nitc__separate_erasure_compiler___ToolContext___opt_no_check_erasure_cast(val* self) {
38 val* var /* : OptionBool */;
39 val* var1 /* : OptionBool */;
40 var1 = self->attrs[COLOR_nitc__separate_erasure_compiler__ToolContext___opt_no_check_erasure_cast].val; /* _opt_no_check_erasure_cast on <self:ToolContext> */
41 if (unlikely(var1 == NULL)) {
42 if(catchStack.cursor >= 0){
43 longjmp(catchStack.envs[catchStack.cursor], 1);
44 }
45 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_erasure_cast");
46 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 26);
47 fatal_exit(1);
48 }
49 var = var1;
50 RET_LABEL:;
51 return var;
52 }
53 /* method separate_erasure_compiler$ToolContext$init for (self: ToolContext) */
54 void nitc__separate_erasure_compiler___ToolContext___core__kernel__Object__init(val* self) {
55 val* var /* : OptionContext */;
56 val* var2 /* : OptionContext */;
57 val* var3 /* : OptionBool */;
58 val* var5 /* : OptionBool */;
59 val* var6 /* : OptionBool */;
60 val* var8 /* : OptionBool */;
61 val* var9 /* : OptionBool */;
62 val* var11 /* : OptionBool */;
63 val* var12 /* : Array[Option] */;
64 val* var13 /* : NativeArray[Option] */;
65 {
66 ((void(*)(val* self))(self->class->vft[COLOR_nitc__separate_erasure_compiler___ToolContext___core__kernel__Object__init]))(self); /* init on <self:ToolContext>*/
67 }
68 {
69 { /* Inline toolcontext$ToolContext$option_context (self) on <self:ToolContext> */
70 var2 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
71 if (unlikely(var2 == NULL)) {
72 if(catchStack.cursor >= 0){
73 longjmp(catchStack.envs[catchStack.cursor], 1);
74 }
75 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
76 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 357);
77 fatal_exit(1);
78 }
79 var = var2;
80 RET_LABEL1:(void)0;
81 }
82 }
83 {
84 { /* Inline separate_erasure_compiler$ToolContext$opt_erasure (self) on <self:ToolContext> */
85 var5 = self->attrs[COLOR_nitc__separate_erasure_compiler__ToolContext___opt_erasure].val; /* _opt_erasure on <self:ToolContext> */
86 if (unlikely(var5 == NULL)) {
87 if(catchStack.cursor >= 0){
88 longjmp(catchStack.envs[catchStack.cursor], 1);
89 }
90 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_erasure");
91 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 22);
92 fatal_exit(1);
93 }
94 var3 = var5;
95 RET_LABEL4:(void)0;
96 }
97 }
98 {
99 { /* Inline separate_erasure_compiler$ToolContext$opt_no_check_erasure_cast (self) on <self:ToolContext> */
100 var8 = self->attrs[COLOR_nitc__separate_erasure_compiler__ToolContext___opt_no_check_erasure_cast].val; /* _opt_no_check_erasure_cast on <self:ToolContext> */
101 if (unlikely(var8 == NULL)) {
102 if(catchStack.cursor >= 0){
103 longjmp(catchStack.envs[catchStack.cursor], 1);
104 }
105 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_erasure_cast");
106 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 26);
107 fatal_exit(1);
108 }
109 var6 = var8;
110 RET_LABEL7:(void)0;
111 }
112 }
113 {
114 { /* Inline separate_erasure_compiler$ToolContext$opt_rta (self) on <self:ToolContext> */
115 var11 = self->attrs[COLOR_nitc__separate_erasure_compiler__ToolContext___opt_rta].val; /* _opt_rta on <self:ToolContext> */
116 if (unlikely(var11 == NULL)) {
117 if(catchStack.cursor >= 0){
118 longjmp(catchStack.envs[catchStack.cursor], 1);
119 }
120 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_rta");
121 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 24);
122 fatal_exit(1);
123 }
124 var9 = var11;
125 RET_LABEL10:(void)0;
126 }
127 }
128 var12 = NEW_core__Array(&type_core__Array__opts__Option);
129 { /* var12 = array_instance Array[Option] */
130 var13 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__opts__Option);
131 ((struct instance_core__NativeArray*)var13)->values[0] = (val*) var3;
132 ((struct instance_core__NativeArray*)var13)->values[1] = (val*) var6;
133 ((struct instance_core__NativeArray*)var13)->values[2] = (val*) var9;
134 {
135 ((void(*)(val* self, val* p0, long p1))(var12->class->vft[COLOR_core__array__Array__with_native]))(var12, var13, 3l); /* with_native on <var12:Array[Option]>*/
136 }
137 }
138 {
139 opts___opts__OptionContext___add_option(var, var12); /* Direct call opts$OptionContext$add_option on <var:OptionContext>*/
140 }
141 RET_LABEL:;
142 }
143 /* method separate_erasure_compiler$ToolContext$process_options for (self: ToolContext, Sequence[String]) */
144 void nitc__separate_erasure_compiler___ToolContext___process_options(val* self, val* p0) {
145 val* var_args /* var args: Sequence[String] */;
146 val* var /* : OptionBool */;
147 val* var2 /* : OptionBool */;
148 val* var3 /* : nullable Object */;
149 val* var5 /* : nullable Object */;
150 short int var6 /* : Bool */;
151 val* var7 /* : OptionBool */;
152 val* var9 /* : OptionBool */;
153 short int var11 /* : Bool */;
154 int cltype;
155 int idtype;
156 const struct type* type_struct;
157 const char* var_class_name;
158 val* var12 /* : nullable Object */;
159 val* var13 /* : OptionBool */;
160 val* var15 /* : OptionBool */;
161 val* var16 /* : nullable Object */;
162 val* var18 /* : nullable Object */;
163 short int var19 /* : Bool */;
164 val* var20 /* : OptionBool */;
165 val* var22 /* : OptionBool */;
166 short int var24 /* : Bool */;
167 int cltype25;
168 int idtype26;
169 const struct type* type_struct27;
170 const char* var_class_name28;
171 val* var29 /* : nullable Object */;
172 var_args = p0;
173 {
174 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nitc__separate_erasure_compiler___ToolContext___process_options]))(self, p0); /* process_options on <self:ToolContext>*/
175 }
176 {
177 { /* Inline abstract_compiler$ToolContext$opt_no_check_all (self) on <self:ToolContext> */
178 var2 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_all].val; /* _opt_no_check_all on <self:ToolContext> */
179 if (unlikely(var2 == NULL)) {
180 if(catchStack.cursor >= 0){
181 longjmp(catchStack.envs[catchStack.cursor], 1);
182 }
183 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_all");
184 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 58);
185 fatal_exit(1);
186 }
187 var = var2;
188 RET_LABEL1:(void)0;
189 }
190 }
191 {
192 { /* Inline opts$Option$value (var) on <var:OptionBool> */
193 var5 = var->attrs[COLOR_opts__Option___value].val; /* _value on <var:OptionBool> */
194 var3 = var5;
195 RET_LABEL4:(void)0;
196 }
197 }
198 var6 = (short int)((long)(var3)>>2);
199 if (var6){
200 {
201 { /* Inline separate_erasure_compiler$ToolContext$opt_no_check_erasure_cast (self) on <self:ToolContext> */
202 var9 = self->attrs[COLOR_nitc__separate_erasure_compiler__ToolContext___opt_no_check_erasure_cast].val; /* _opt_no_check_erasure_cast on <self:ToolContext> */
203 if (unlikely(var9 == NULL)) {
204 if(catchStack.cursor >= 0){
205 longjmp(catchStack.envs[catchStack.cursor], 1);
206 }
207 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_erasure_cast");
208 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 26);
209 fatal_exit(1);
210 }
211 var7 = var9;
212 RET_LABEL8:(void)0;
213 }
214 }
215 {
216 { /* Inline opts$Option$value= (var7,1) on <var7:OptionBool> */
217 /* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
218 /* <1:Bool> isa VALUE */
219 type_struct = var7->type->resolution_table->types[COLOR_opts__Option__VALUE];
220 cltype = type_struct->color;
221 idtype = type_struct->id;
222 if(cltype >= (&type_core__Bool)->table_size) {
223 var11 = 0;
224 } else {
225 var11 = (&type_core__Bool)->type_table[cltype] == idtype;
226 }
227 if (unlikely(!var11)) {
228 var_class_name = type_core__Bool.name;
229 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
230 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
231 fatal_exit(1);
232 }
233 var12 = (val*)((long)(1)<<2|3);
234 var7->attrs[COLOR_opts__Option___value].val = var12; /* _value on <var7:OptionBool> */
235 RET_LABEL10:(void)0;
236 }
237 }
238 } else {
239 }
240 {
241 { /* Inline separate_erasure_compiler$ToolContext$opt_erasure (self) on <self:ToolContext> */
242 var15 = self->attrs[COLOR_nitc__separate_erasure_compiler__ToolContext___opt_erasure].val; /* _opt_erasure on <self:ToolContext> */
243 if (unlikely(var15 == NULL)) {
244 if(catchStack.cursor >= 0){
245 longjmp(catchStack.envs[catchStack.cursor], 1);
246 }
247 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_erasure");
248 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 22);
249 fatal_exit(1);
250 }
251 var13 = var15;
252 RET_LABEL14:(void)0;
253 }
254 }
255 {
256 { /* Inline opts$Option$value (var13) on <var13:OptionBool> */
257 var18 = var13->attrs[COLOR_opts__Option___value].val; /* _value on <var13:OptionBool> */
258 var16 = var18;
259 RET_LABEL17:(void)0;
260 }
261 }
262 var19 = (short int)((long)(var16)>>2);
263 if (var19){
264 {
265 { /* Inline separate_compiler$ToolContext$opt_no_tag_primitives (self) on <self:ToolContext> */
266 var22 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_tag_primitives].val; /* _opt_no_tag_primitives on <self:ToolContext> */
267 if (unlikely(var22 == NULL)) {
268 if(catchStack.cursor >= 0){
269 longjmp(catchStack.envs[catchStack.cursor], 1);
270 }
271 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_tag_primitives");
272 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 32);
273 fatal_exit(1);
274 }
275 var20 = var22;
276 RET_LABEL21:(void)0;
277 }
278 }
279 {
280 { /* Inline opts$Option$value= (var20,1) on <var20:OptionBool> */
281 /* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
282 /* <1:Bool> isa VALUE */
283 type_struct27 = var20->type->resolution_table->types[COLOR_opts__Option__VALUE];
284 cltype25 = type_struct27->color;
285 idtype26 = type_struct27->id;
286 if(cltype25 >= (&type_core__Bool)->table_size) {
287 var24 = 0;
288 } else {
289 var24 = (&type_core__Bool)->type_table[cltype25] == idtype26;
290 }
291 if (unlikely(!var24)) {
292 var_class_name28 = type_core__Bool.name;
293 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name28);
294 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
295 fatal_exit(1);
296 }
297 var29 = (val*)((long)(1)<<2|3);
298 var20->attrs[COLOR_opts__Option___value].val = var29; /* _value on <var20:OptionBool> */
299 RET_LABEL23:(void)0;
300 }
301 }
302 } else {
303 }
304 RET_LABEL:;
305 }
306 /* method separate_erasure_compiler$ErasureCompilerPhase$process_mainmodule for (self: ErasureCompilerPhase, MModule, SequenceRead[MModule]) */
307 void nitc___nitc__ErasureCompilerPhase___nitc__modelbuilder__Phase__process_mainmodule(val* self, val* p0, val* p1) {
308 val* var_mainmodule /* var mainmodule: MModule */;
309 val* var_given_mmodules /* var given_mmodules: SequenceRead[MModule] */;
310 val* var /* : ToolContext */;
311 val* var2 /* : ToolContext */;
312 val* var3 /* : OptionBool */;
313 val* var5 /* : OptionBool */;
314 val* var6 /* : nullable Object */;
315 val* var8 /* : nullable Object */;
316 short int var9 /* : Bool */;
317 short int var10 /* : Bool */;
318 val* var11 /* : ToolContext */;
319 val* var13 /* : ToolContext */;
320 val* var14 /* : ModelBuilder */;
321 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
322 val* var_analysis /* var analysis: nullable Object */;
323 val* var15 /* : ToolContext */;
324 val* var17 /* : ToolContext */;
325 val* var18 /* : OptionBool */;
326 val* var20 /* : OptionBool */;
327 val* var21 /* : nullable Object */;
328 val* var23 /* : nullable Object */;
329 short int var24 /* : Bool */;
330 val* var25 /* : RapidTypeAnalysis */;
331 var_mainmodule = p0;
332 var_given_mmodules = p1;
333 {
334 { /* Inline phase$Phase$toolcontext (self) on <self:ErasureCompilerPhase> */
335 var2 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:ErasureCompilerPhase> */
336 if (unlikely(var2 == NULL)) {
337 if(catchStack.cursor >= 0){
338 longjmp(catchStack.envs[catchStack.cursor], 1);
339 }
340 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
341 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 210);
342 fatal_exit(1);
343 }
344 var = var2;
345 RET_LABEL1:(void)0;
346 }
347 }
348 {
349 { /* Inline separate_erasure_compiler$ToolContext$opt_erasure (var) on <var:ToolContext> */
350 var5 = var->attrs[COLOR_nitc__separate_erasure_compiler__ToolContext___opt_erasure].val; /* _opt_erasure on <var:ToolContext> */
351 if (unlikely(var5 == NULL)) {
352 if(catchStack.cursor >= 0){
353 longjmp(catchStack.envs[catchStack.cursor], 1);
354 }
355 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_erasure");
356 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 22);
357 fatal_exit(1);
358 }
359 var3 = var5;
360 RET_LABEL4:(void)0;
361 }
362 }
363 {
364 { /* Inline opts$Option$value (var3) on <var3:OptionBool> */
365 var8 = var3->attrs[COLOR_opts__Option___value].val; /* _value on <var3:OptionBool> */
366 var6 = var8;
367 RET_LABEL7:(void)0;
368 }
369 }
370 var9 = (short int)((long)(var6)>>2);
371 var10 = !var9;
372 if (var10){
373 goto RET_LABEL;
374 } else {
375 }
376 {
377 { /* Inline phase$Phase$toolcontext (self) on <self:ErasureCompilerPhase> */
378 var13 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:ErasureCompilerPhase> */
379 if (unlikely(var13 == NULL)) {
380 if(catchStack.cursor >= 0){
381 longjmp(catchStack.envs[catchStack.cursor], 1);
382 }
383 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
384 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 210);
385 fatal_exit(1);
386 }
387 var11 = var13;
388 RET_LABEL12:(void)0;
389 }
390 }
391 {
392 var14 = nitc__modelbuilder_base___ToolContext___modelbuilder(var11);
393 }
394 var_modelbuilder = var14;
395 var_analysis = ((val*)NULL);
396 {
397 { /* Inline phase$Phase$toolcontext (self) on <self:ErasureCompilerPhase> */
398 var17 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:ErasureCompilerPhase> */
399 if (unlikely(var17 == NULL)) {
400 if(catchStack.cursor >= 0){
401 longjmp(catchStack.envs[catchStack.cursor], 1);
402 }
403 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
404 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 210);
405 fatal_exit(1);
406 }
407 var15 = var17;
408 RET_LABEL16:(void)0;
409 }
410 }
411 {
412 { /* Inline separate_erasure_compiler$ToolContext$opt_rta (var15) on <var15:ToolContext> */
413 var20 = var15->attrs[COLOR_nitc__separate_erasure_compiler__ToolContext___opt_rta].val; /* _opt_rta on <var15:ToolContext> */
414 if (unlikely(var20 == NULL)) {
415 if(catchStack.cursor >= 0){
416 longjmp(catchStack.envs[catchStack.cursor], 1);
417 }
418 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_rta");
419 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 24);
420 fatal_exit(1);
421 }
422 var18 = var20;
423 RET_LABEL19:(void)0;
424 }
425 }
426 {
427 { /* Inline opts$Option$value (var18) on <var18:OptionBool> */
428 var23 = var18->attrs[COLOR_opts__Option___value].val; /* _value on <var18:OptionBool> */
429 var21 = var23;
430 RET_LABEL22:(void)0;
431 }
432 }
433 var24 = (short int)((long)(var21)>>2);
434 if (var24){
435 {
436 var25 = nitc__rapid_type_analysis___ModelBuilder___do_rapid_type_analysis(var_modelbuilder, var_mainmodule);
437 }
438 var_analysis = var25;
439 } else {
440 }
441 {
442 nitc__separate_erasure_compiler___ModelBuilder___run_separate_erasure_compiler(var_modelbuilder, var_mainmodule, var_analysis); /* Direct call separate_erasure_compiler$ModelBuilder$run_separate_erasure_compiler on <var_modelbuilder:ModelBuilder>*/
443 }
444 RET_LABEL:;
445 }
446 /* method separate_erasure_compiler$ModelBuilder$run_separate_erasure_compiler for (self: ModelBuilder, MModule, nullable RapidTypeAnalysis) */
447 void nitc__separate_erasure_compiler___ModelBuilder___run_separate_erasure_compiler(val* self, val* p0, val* p1) {
448 val* var_mainmodule /* var mainmodule: MModule */;
449 val* var_runtime_type_analysis /* var runtime_type_analysis: nullable RapidTypeAnalysis */;
450 val* var /* : Sys */;
451 long var1 /* : Int */;
452 long var3 /* : Int */;
453 long var_time0 /* var time0: Int */;
454 val* var4 /* : ToolContext */;
455 val* var6 /* : ToolContext */;
456 static val* varonce;
457 val* var7 /* : String */;
458 char* var8 /* : CString */;
459 val* var9 /* : String */;
460 val* var10 /* : nullable Int */;
461 val* var11 /* : nullable Int */;
462 val* var12 /* : nullable Bool */;
463 val* var13 /* : nullable Bool */;
464 val* var14 /* : SeparateErasureCompiler */;
465 val* var_compiler /* var compiler: SeparateErasureCompiler */;
466 val* var15 /* : Sys */;
467 long var16 /* : Int */;
468 long var18 /* : Int */;
469 long var_time1 /* var time1: Int */;
470 val* var19 /* : ToolContext */;
471 val* var21 /* : ToolContext */;
472 val* var23 /* : NativeArray[String] */;
473 static val* varonce22;
474 static val* varonce24;
475 val* var25 /* : String */;
476 char* var26 /* : CString */;
477 val* var27 /* : String */;
478 val* var28 /* : nullable Int */;
479 val* var29 /* : nullable Int */;
480 val* var30 /* : nullable Bool */;
481 val* var31 /* : nullable Bool */;
482 static val* varonce32;
483 val* var33 /* : String */;
484 char* var34 /* : CString */;
485 val* var35 /* : String */;
486 val* var36 /* : nullable Int */;
487 val* var37 /* : nullable Int */;
488 val* var38 /* : nullable Bool */;
489 val* var39 /* : nullable Bool */;
490 long var40 /* : Int */;
491 short int var42 /* : Bool */;
492 int cltype;
493 int idtype;
494 const char* var_class_name;
495 long var43 /* : Int */;
496 val* var44 /* : String */;
497 val* var45 /* : String */;
498 var_mainmodule = p0;
499 var_runtime_type_analysis = p1;
500 var = glob_sys;
501 {
502 { /* Inline time$Sys$get_time (var) on <var:Sys> */
503 struct nitni_instance* var_for_c_0;
504 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
505 var_for_c_0->value = var;
506 var3 = core__time___Sys_get_time___impl(var_for_c_0);
507 var1 = var3;
508 goto RET_LABEL2;
509 RET_LABEL2:(void)0;
510 }
511 }
512 var_time0 = var1;
513 {
514 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
515 var6 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
516 if (unlikely(var6 == NULL)) {
517 if(catchStack.cursor >= 0){
518 longjmp(catchStack.envs[catchStack.cursor], 1);
519 }
520 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
521 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
522 fatal_exit(1);
523 }
524 var4 = var6;
525 RET_LABEL5:(void)0;
526 }
527 }
528 if (likely(varonce!=NULL)) {
529 var7 = varonce;
530 } else {
531 var8 = "*** GENERATING C ***";
532 var10 = (val*)(20l<<2|1);
533 var11 = (val*)(20l<<2|1);
534 var12 = (val*)((long)(0)<<2|3);
535 var13 = (val*)((long)(0)<<2|3);
536 var9 = core__flat___CString___to_s_unsafe(var8, var10, var11, var12, var13);
537 var7 = var9;
538 varonce = var7;
539 }
540 {
541 nitc___nitc__ToolContext___info(var4, var7, 1l); /* Direct call toolcontext$ToolContext$info on <var4:ToolContext>*/
542 }
543 var14 = NEW_nitc__SeparateErasureCompiler(&type_nitc__SeparateErasureCompiler);
544 {
545 ((void(*)(val* self, val* p0))(var14->class->vft[COLOR_nitc__abstract_compiler__AbstractCompiler__mainmodule_61d]))(var14, var_mainmodule); /* mainmodule= on <var14:SeparateErasureCompiler>*/
546 }
547 {
548 ((void(*)(val* self, val* p0))(var14->class->vft[COLOR_nitc__abstract_compiler__AbstractCompiler__modelbuilder_61d]))(var14, self); /* modelbuilder= on <var14:SeparateErasureCompiler>*/
549 }
550 {
551 ((void(*)(val* self, val* p0))(var14->class->vft[COLOR_nitc__separate_compiler__SeparateCompiler__runtime_type_analysis_61d]))(var14, var_runtime_type_analysis); /* runtime_type_analysis= on <var14:SeparateErasureCompiler>*/
552 }
553 {
554 ((void(*)(val* self))(var14->class->vft[COLOR_core__kernel__Object__init]))(var14); /* init on <var14:SeparateErasureCompiler>*/
555 }
556 var_compiler = var14;
557 {
558 nitc___nitc__SeparateCompiler___nitc__abstract_compiler__AbstractCompiler__do_compilation(var_compiler); /* Direct call separate_compiler$SeparateCompiler$do_compilation on <var_compiler:SeparateErasureCompiler>*/
559 }
560 {
561 nitc___nitc__SeparateCompiler___nitc__abstract_compiler__AbstractCompiler__display_stats(var_compiler); /* Direct call separate_compiler$SeparateCompiler$display_stats on <var_compiler:SeparateErasureCompiler>*/
562 }
563 var15 = glob_sys;
564 {
565 { /* Inline time$Sys$get_time (var15) on <var15:Sys> */
566 struct nitni_instance* var_for_c_0;
567 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
568 var_for_c_0->value = var15;
569 var18 = core__time___Sys_get_time___impl(var_for_c_0);
570 var16 = var18;
571 goto RET_LABEL17;
572 RET_LABEL17:(void)0;
573 }
574 }
575 var_time1 = var16;
576 {
577 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
578 var21 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
579 if (unlikely(var21 == NULL)) {
580 if(catchStack.cursor >= 0){
581 longjmp(catchStack.envs[catchStack.cursor], 1);
582 }
583 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
584 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
585 fatal_exit(1);
586 }
587 var19 = var21;
588 RET_LABEL20:(void)0;
589 }
590 }
591 if (unlikely(varonce22==NULL)) {
592 var23 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
593 if (likely(varonce24!=NULL)) {
594 var25 = varonce24;
595 } else {
596 var26 = "*** END GENERATING C: ";
597 var28 = (val*)(22l<<2|1);
598 var29 = (val*)(22l<<2|1);
599 var30 = (val*)((long)(0)<<2|3);
600 var31 = (val*)((long)(0)<<2|3);
601 var27 = core__flat___CString___to_s_unsafe(var26, var28, var29, var30, var31);
602 var25 = var27;
603 varonce24 = var25;
604 }
605 ((struct instance_core__NativeArray*)var23)->values[0]=var25;
606 if (likely(varonce32!=NULL)) {
607 var33 = varonce32;
608 } else {
609 var34 = " ***";
610 var36 = (val*)(4l<<2|1);
611 var37 = (val*)(4l<<2|1);
612 var38 = (val*)((long)(0)<<2|3);
613 var39 = (val*)((long)(0)<<2|3);
614 var35 = core__flat___CString___to_s_unsafe(var34, var36, var37, var38, var39);
615 var33 = var35;
616 varonce32 = var33;
617 }
618 ((struct instance_core__NativeArray*)var23)->values[2]=var33;
619 } else {
620 var23 = varonce22;
621 varonce22 = NULL;
622 }
623 {
624 { /* Inline kernel$Int$- (var_time1,var_time0) on <var_time1:Int> */
625 /* Covariant cast for argument 0 (i) <var_time0:Int> isa OTHER */
626 /* <var_time0:Int> isa OTHER */
627 var42 = 1; /* easy <var_time0:Int> isa OTHER*/
628 if (unlikely(!var42)) {
629 var_class_name = type_core__Int.name;
630 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
631 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
632 fatal_exit(1);
633 }
634 var43 = var_time1 - var_time0;
635 var40 = var43;
636 goto RET_LABEL41;
637 RET_LABEL41:(void)0;
638 }
639 }
640 var44 = core__flat___Int___core__abstract_text__Object__to_s(var40);
641 ((struct instance_core__NativeArray*)var23)->values[1]=var44;
642 {
643 var45 = ((val*(*)(val* self))(var23->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var23); /* native_to_s on <var23:NativeArray[String]>*/
644 }
645 varonce22 = var23;
646 {
647 nitc___nitc__ToolContext___info(var19, var45, 2l); /* Direct call toolcontext$ToolContext$info on <var19:ToolContext>*/
648 }
649 {
650 nitc__abstract_compiler___ModelBuilder___write_and_make(self, var_compiler); /* Direct call abstract_compiler$ModelBuilder$write_and_make on <self:ModelBuilder>*/
651 }
652 RET_LABEL:;
653 }
654 /* method separate_erasure_compiler$SeparateErasureCompiler$class_ids for (self: SeparateErasureCompiler): Map[MClass, Int] */
655 val* nitc___nitc__SeparateErasureCompiler___class_ids(val* self) {
656 val* var /* : Map[MClass, Int] */;
657 val* var1 /* : Map[MClass, Int] */;
658 var1 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_ids].val; /* _class_ids on <self:SeparateErasureCompiler> */
659 if (unlikely(var1 == NULL)) {
660 if(catchStack.cursor >= 0){
661 longjmp(catchStack.envs[catchStack.cursor], 1);
662 }
663 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_ids");
664 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 84);
665 fatal_exit(1);
666 }
667 var = var1;
668 RET_LABEL:;
669 return var;
670 }
671 /* method separate_erasure_compiler$SeparateErasureCompiler$class_ids= for (self: SeparateErasureCompiler, Map[MClass, Int]) */
672 void nitc___nitc__SeparateErasureCompiler___class_ids_61d(val* self, val* p0) {
673 self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_ids].val = p0; /* _class_ids on <self:SeparateErasureCompiler> */
674 RET_LABEL:;
675 }
676 /* method separate_erasure_compiler$SeparateErasureCompiler$class_colors for (self: SeparateErasureCompiler): Map[MClass, Int] */
677 val* nitc___nitc__SeparateErasureCompiler___class_colors(val* self) {
678 val* var /* : Map[MClass, Int] */;
679 val* var1 /* : Map[MClass, Int] */;
680 var1 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_colors].val; /* _class_colors on <self:SeparateErasureCompiler> */
681 if (unlikely(var1 == NULL)) {
682 if(catchStack.cursor >= 0){
683 longjmp(catchStack.envs[catchStack.cursor], 1);
684 }
685 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_colors");
686 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 85);
687 fatal_exit(1);
688 }
689 var = var1;
690 RET_LABEL:;
691 return var;
692 }
693 /* method separate_erasure_compiler$SeparateErasureCompiler$class_colors= for (self: SeparateErasureCompiler, Map[MClass, Int]) */
694 void nitc___nitc__SeparateErasureCompiler___class_colors_61d(val* self, val* p0) {
695 self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_colors].val = p0; /* _class_colors on <self:SeparateErasureCompiler> */
696 RET_LABEL:;
697 }
698 /* method separate_erasure_compiler$SeparateErasureCompiler$vt_colors for (self: SeparateErasureCompiler): Map[MVirtualTypeProp, Int] */
699 val* nitc___nitc__SeparateErasureCompiler___vt_colors(val* self) {
700 val* var /* : Map[MVirtualTypeProp, Int] */;
701 val* var1 /* : Map[MVirtualTypeProp, Int] */;
702 var1 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val; /* _vt_colors on <self:SeparateErasureCompiler> */
703 if (unlikely(var1 == NULL)) {
704 if(catchStack.cursor >= 0){
705 longjmp(catchStack.envs[catchStack.cursor], 1);
706 }
707 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
708 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 86);
709 fatal_exit(1);
710 }
711 var = var1;
712 RET_LABEL:;
713 return var;
714 }
715 /* method separate_erasure_compiler$SeparateErasureCompiler$vt_colors= for (self: SeparateErasureCompiler, Map[MVirtualTypeProp, Int]) */
716 void nitc___nitc__SeparateErasureCompiler___vt_colors_61d(val* self, val* p0) {
717 self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val = p0; /* _vt_colors on <self:SeparateErasureCompiler> */
718 RET_LABEL:;
719 }
720 /* method separate_erasure_compiler$SeparateErasureCompiler$init for (self: SeparateErasureCompiler) */
721 void nitc___nitc__SeparateErasureCompiler___core__kernel__Object__init(val* self) {
722 val* var /* : MModule */;
723 val* var2 /* : MModule */;
724 val* var3 /* : POSet[MClass] */;
725 val* var_poset /* var poset: POSet[MClass] */;
726 val* var4 /* : HashSet[MClass] */;
727 val* var_mclasses /* var mclasses: HashSet[MClass] */;
728 val* var5 /* : POSetColorer[MClass] */;
729 val* var_colorer /* var colorer: POSetColorer[MClass] */;
730 val* var7 /* : Map[Object, Int] */;
731 val* var9 /* : Map[Object, Int] */;
732 val* var11 /* : Map[MClass, Array[nullable MClass]] */;
733 val* var13 /* : HashMap[MClass, Set[MVirtualTypeProp]] */;
734 val* var_vts /* var vts: HashMap[MClass, Set[MVirtualTypeProp]] */;
735 val* var_ /* var : HashSet[MClass] */;
736 val* var14 /* : Iterator[nullable Object] */;
737 val* var_15 /* var : Iterator[MClass] */;
738 short int var16 /* : Bool */;
739 val* var17 /* : nullable Object */;
740 val* var_mclass /* var mclass: MClass */;
741 val* var18 /* : HashSet[MVirtualTypeProp] */;
742 val* var19 /* : MModule */;
743 val* var21 /* : MModule */;
744 val* var22 /* : Set[MProperty] */;
745 val* var_23 /* var : Set[MProperty] */;
746 val* var24 /* : Iterator[nullable Object] */;
747 val* var_25 /* var : Iterator[MProperty] */;
748 short int var26 /* : Bool */;
749 val* var28 /* : nullable Object */;
750 val* var_mprop /* var mprop: MProperty */;
751 short int var29 /* : Bool */;
752 int cltype;
753 int idtype;
754 val* var30 /* : nullable Object */;
755 val* var31 /* : POSetBucketsColorer[MClass, MVirtualTypeProp] */;
756 val* var32 /* : Map[Object, Set[Object]] */;
757 val* var_vt_colorer /* var vt_colorer: POSetBucketsColorer[MClass, MVirtualTypeProp] */;
758 val* var33 /* : Map[Object, Int] */;
759 val* var35 /* : Map[MClass, Array[nullable MPropDef]] */;
760 {
761 ((void(*)(val* self))(self->class->vft[COLOR_nitc___nitc__SeparateErasureCompiler___core__kernel__Object__init]))(self); /* init on <self:SeparateErasureCompiler>*/
762 }
763 {
764 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:SeparateErasureCompiler> */
765 var2 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
766 if (unlikely(var2 == NULL)) {
767 if(catchStack.cursor >= 0){
768 longjmp(catchStack.envs[catchStack.cursor], 1);
769 }
770 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
771 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
772 fatal_exit(1);
773 }
774 var = var2;
775 RET_LABEL1:(void)0;
776 }
777 }
778 {
779 var3 = nitc__model___MModule___flatten_mclass_hierarchy(var);
780 }
781 var_poset = var3;
782 var4 = NEW_core__HashSet(&type_core__HashSet__nitc__MClass);
783 {
784 core___core__HashSet___from(var4, var_poset); /* Direct call hash_collection$HashSet$from on <var4:HashSet[MClass]>*/
785 }
786 var_mclasses = var4;
787 var5 = NEW_nitc__POSetColorer(&type_nitc__POSetColorer__nitc__MClass);
788 {
789 { /* Inline kernel$Object$init (var5) on <var5:POSetColorer[MClass]> */
790 RET_LABEL6:(void)0;
791 }
792 }
793 var_colorer = var5;
794 {
795 nitc___nitc__POSetColorer___colorize(var_colorer, var_poset); /* Direct call coloring$POSetColorer$colorize on <var_colorer:POSetColorer[MClass]>*/
796 }
797 {
798 var7 = nitc___nitc__POSetColorer___ids(var_colorer);
799 }
800 {
801 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$class_ids= (self,var7) on <self:SeparateErasureCompiler> */
802 self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_ids].val = var7; /* _class_ids on <self:SeparateErasureCompiler> */
803 RET_LABEL8:(void)0;
804 }
805 }
806 {
807 var9 = nitc___nitc__POSetColorer___colors(var_colorer);
808 }
809 {
810 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$class_colors= (self,var9) on <self:SeparateErasureCompiler> */
811 self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_colors].val = var9; /* _class_colors on <self:SeparateErasureCompiler> */
812 RET_LABEL10:(void)0;
813 }
814 }
815 {
816 var11 = nitc___nitc__SeparateErasureCompiler___build_class_typing_tables(self, var_mclasses);
817 }
818 {
819 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$class_tables= (self,var11) on <self:SeparateErasureCompiler> */
820 self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_tables].val = var11; /* _class_tables on <self:SeparateErasureCompiler> */
821 RET_LABEL12:(void)0;
822 }
823 }
824 var13 = NEW_core__HashMap(&type_core__HashMap__nitc__MClass__core__Set__nitc__MVirtualTypeProp);
825 {
826 core___core__HashMap___core__kernel__Object__init(var13); /* Direct call hash_collection$HashMap$init on <var13:HashMap[MClass, Set[MVirtualTypeProp]]>*/
827 }
828 var_vts = var13;
829 var_ = var_mclasses;
830 {
831 var14 = core___core__HashSet___core__abstract_collection__Collection__iterator(var_);
832 }
833 var_15 = var14;
834 for(;;) {
835 {
836 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:Iterator[MClass]>*/
837 }
838 if (var16){
839 } else {
840 goto BREAK_label;
841 }
842 {
843 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:Iterator[MClass]>*/
844 }
845 var_mclass = var17;
846 var18 = NEW_core__HashSet(&type_core__HashSet__nitc__MVirtualTypeProp);
847 {
848 core___core__HashSet___core__kernel__Object__init(var18); /* Direct call hash_collection$HashSet$init on <var18:HashSet[MVirtualTypeProp]>*/
849 }
850 {
851 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_vts, var_mclass, var18); /* Direct call hash_collection$HashMap$[]= on <var_vts:HashMap[MClass, Set[MVirtualTypeProp]]>*/
852 }
853 {
854 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:SeparateErasureCompiler> */
855 var21 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
856 if (unlikely(var21 == NULL)) {
857 if(catchStack.cursor >= 0){
858 longjmp(catchStack.envs[catchStack.cursor], 1);
859 }
860 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
861 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
862 fatal_exit(1);
863 }
864 var19 = var21;
865 RET_LABEL20:(void)0;
866 }
867 }
868 {
869 var22 = nitc__abstract_compiler___MModule___properties(var19, var_mclass);
870 }
871 var_23 = var22;
872 {
873 var24 = ((val*(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_23); /* iterator on <var_23:Set[MProperty]>*/
874 }
875 var_25 = var24;
876 for(;;) {
877 {
878 var26 = ((short int(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_25); /* is_ok on <var_25:Iterator[MProperty]>*/
879 }
880 if (var26){
881 } else {
882 goto BREAK_label27;
883 }
884 {
885 var28 = ((val*(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_25); /* item on <var_25:Iterator[MProperty]>*/
886 }
887 var_mprop = var28;
888 /* <var_mprop:MProperty> isa MVirtualTypeProp */
889 cltype = type_nitc__MVirtualTypeProp.color;
890 idtype = type_nitc__MVirtualTypeProp.id;
891 if(cltype >= var_mprop->type->table_size) {
892 var29 = 0;
893 } else {
894 var29 = var_mprop->type->type_table[cltype] == idtype;
895 }
896 if (var29){
897 {
898 var30 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_vts, var_mclass);
899 }
900 {
901 ((void(*)(val* self, val* p0))((((long)var30&3)?class_info[((long)var30&3)]:var30->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var30, var_mprop); /* add on <var30:nullable Object(Set[MVirtualTypeProp])>*/
902 }
903 } else {
904 }
905 {
906 ((void(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_25); /* next on <var_25:Iterator[MProperty]>*/
907 }
908 }
909 BREAK_label27: (void)0;
910 {
911 ((void(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_25); /* finish on <var_25:Iterator[MProperty]>*/
912 }
913 {
914 ((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:Iterator[MClass]>*/
915 }
916 }
917 BREAK_label: (void)0;
918 {
919 ((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:Iterator[MClass]>*/
920 }
921 var31 = NEW_nitc__POSetBucketsColorer(&type_nitc__POSetBucketsColorer__nitc__MClass__nitc__MVirtualTypeProp);
922 {
923 var32 = nitc___nitc__POSetColorer___conflicts(var_colorer);
924 }
925 {
926 ((void(*)(val* self, val* p0))(var31->class->vft[COLOR_nitc__coloring__POSetBucketsColorer__poset_61d]))(var31, var_poset); /* poset= on <var31:POSetBucketsColorer[MClass, MVirtualTypeProp]>*/
927 }
928 {
929 ((void(*)(val* self, val* p0))(var31->class->vft[COLOR_nitc__coloring__POSetBucketsColorer__conflicts_61d]))(var31, var32); /* conflicts= on <var31:POSetBucketsColorer[MClass, MVirtualTypeProp]>*/
930 }
931 {
932 ((void(*)(val* self))(var31->class->vft[COLOR_core__kernel__Object__init]))(var31); /* init on <var31:POSetBucketsColorer[MClass, MVirtualTypeProp]>*/
933 }
934 var_vt_colorer = var31;
935 {
936 var33 = nitc___nitc__POSetBucketsColorer___colorize(var_vt_colorer, var_vts);
937 }
938 {
939 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$vt_colors= (self,var33) on <self:SeparateErasureCompiler> */
940 self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val = var33; /* _vt_colors on <self:SeparateErasureCompiler> */
941 RET_LABEL34:(void)0;
942 }
943 }
944 {
945 var35 = nitc___nitc__SeparateErasureCompiler___build_vt_tables(self, var_mclasses);
946 }
947 {
948 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$vt_tables= (self,var35) on <self:SeparateErasureCompiler> */
949 self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___vt_tables].val = var35; /* _vt_tables on <self:SeparateErasureCompiler> */
950 RET_LABEL36:(void)0;
951 }
952 }
953 RET_LABEL:;
954 }
955 /* method separate_erasure_compiler$SeparateErasureCompiler$build_vt_tables for (self: SeparateErasureCompiler, Set[MClass]): Map[MClass, Array[nullable MPropDef]] */
956 val* nitc___nitc__SeparateErasureCompiler___build_vt_tables(val* self, val* p0) {
957 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
958 val* var_mclasses /* var mclasses: Set[MClass] */;
959 val* var1 /* : HashMap[MClass, Array[nullable MPropDef]] */;
960 val* var_tables /* var tables: HashMap[MClass, Array[nullable MPropDef]] */;
961 val* var_ /* var : Set[MClass] */;
962 val* var2 /* : Iterator[nullable Object] */;
963 val* var_3 /* var : Iterator[MClass] */;
964 short int var4 /* : Bool */;
965 val* var5 /* : nullable Object */;
966 val* var_mclass /* var mclass: MClass */;
967 val* var6 /* : Array[nullable MPropDef] */;
968 val* var_table /* var table: Array[nullable MPropDef] */;
969 val* var7 /* : Array[MClass] */;
970 val* var_parents /* var parents: Array[MClass] */;
971 val* var8 /* : MModule */;
972 val* var10 /* : MModule */;
973 val* var11 /* : POSet[MClass] */;
974 short int var12 /* : Bool */;
975 val* var13 /* : MModule */;
976 val* var15 /* : MModule */;
977 val* var16 /* : POSetElement[MClass] */;
978 val* var17 /* : Collection[nullable Object] */;
979 val* var18 /* : Array[nullable Object] */;
980 val* var19 /* : MModule */;
981 val* var21 /* : MModule */;
982 val* var_22 /* var : Array[MClass] */;
983 val* var23 /* : IndexedIterator[nullable Object] */;
984 val* var_24 /* var : IndexedIterator[MClass] */;
985 short int var25 /* : Bool */;
986 val* var27 /* : nullable Object */;
987 val* var_parent /* var parent: MClass */;
988 short int var28 /* : Bool */;
989 val* var_other /* var other: nullable Object */;
990 short int var30 /* : Bool */;
991 short int var32 /* : Bool */;
992 val* var34 /* : MModule */;
993 val* var36 /* : MModule */;
994 val* var37 /* : Set[MProperty] */;
995 val* var_38 /* var : Set[MProperty] */;
996 val* var39 /* : Iterator[nullable Object] */;
997 val* var_40 /* var : Iterator[MProperty] */;
998 short int var41 /* : Bool */;
999 val* var43 /* : nullable Object */;
1000 val* var_mproperty /* var mproperty: MProperty */;
1001 short int var44 /* : Bool */;
1002 int cltype;
1003 int idtype;
1004 short int var45 /* : Bool */;
1005 val* var47 /* : Map[MVirtualTypeProp, Int] */;
1006 val* var49 /* : Map[MVirtualTypeProp, Int] */;
1007 val* var50 /* : nullable Object */;
1008 long var51 /* : Int */;
1009 long var_color /* var color: Int */;
1010 long var52 /* : Int */;
1011 long var54 /* : Int */;
1012 short int var55 /* : Bool */;
1013 short int var57 /* : Bool */;
1014 int cltype58;
1015 int idtype59;
1016 const char* var_class_name;
1017 short int var60 /* : Bool */;
1018 long var61 /* : Int */;
1019 long var63 /* : Int */;
1020 long var_i /* var i: Int */;
1021 long var_64 /* var : Int */;
1022 short int var65 /* : Bool */;
1023 short int var67 /* : Bool */;
1024 int cltype68;
1025 int idtype69;
1026 const char* var_class_name70;
1027 short int var71 /* : Bool */;
1028 long var73 /* : Int */;
1029 val* var74 /* : Array[MPropDef] */;
1030 val* var76 /* : Array[MPropDef] */;
1031 val* var_77 /* var : Array[MVirtualTypeDef] */;
1032 val* var78 /* : IndexedIterator[nullable Object] */;
1033 val* var_79 /* var : IndexedIterator[MVirtualTypeDef] */;
1034 short int var80 /* : Bool */;
1035 val* var82 /* : nullable Object */;
1036 val* var_mpropdef /* var mpropdef: MVirtualTypeDef */;
1037 val* var83 /* : MClassDef */;
1038 val* var85 /* : MClassDef */;
1039 val* var86 /* : MClass */;
1040 val* var88 /* : MClass */;
1041 short int var89 /* : Bool */;
1042 short int var91 /* : Bool */;
1043 short int var93 /* : Bool */;
1044 val* var94 /* : MModule */;
1045 val* var96 /* : MModule */;
1046 val* var97 /* : Set[MProperty] */;
1047 val* var_98 /* var : Set[MProperty] */;
1048 val* var99 /* : Iterator[nullable Object] */;
1049 val* var_100 /* var : Iterator[MProperty] */;
1050 short int var101 /* : Bool */;
1051 val* var103 /* : nullable Object */;
1052 val* var_mproperty104 /* var mproperty: MProperty */;
1053 short int var105 /* : Bool */;
1054 int cltype106;
1055 int idtype107;
1056 short int var108 /* : Bool */;
1057 val* var110 /* : Map[MVirtualTypeProp, Int] */;
1058 val* var112 /* : Map[MVirtualTypeProp, Int] */;
1059 val* var113 /* : nullable Object */;
1060 long var114 /* : Int */;
1061 long var_color115 /* var color: Int */;
1062 long var116 /* : Int */;
1063 long var118 /* : Int */;
1064 short int var119 /* : Bool */;
1065 short int var121 /* : Bool */;
1066 int cltype122;
1067 int idtype123;
1068 const char* var_class_name124;
1069 short int var125 /* : Bool */;
1070 long var126 /* : Int */;
1071 long var128 /* : Int */;
1072 long var_i129 /* var i: Int */;
1073 long var_130 /* var : Int */;
1074 short int var131 /* : Bool */;
1075 short int var133 /* : Bool */;
1076 int cltype134;
1077 int idtype135;
1078 const char* var_class_name136;
1079 short int var137 /* : Bool */;
1080 long var139 /* : Int */;
1081 val* var140 /* : Array[MPropDef] */;
1082 val* var142 /* : Array[MPropDef] */;
1083 val* var_143 /* var : Array[MVirtualTypeDef] */;
1084 val* var144 /* : IndexedIterator[nullable Object] */;
1085 val* var_145 /* var : IndexedIterator[MVirtualTypeDef] */;
1086 short int var146 /* : Bool */;
1087 val* var148 /* : nullable Object */;
1088 val* var_mpropdef149 /* var mpropdef: MVirtualTypeDef */;
1089 val* var150 /* : MClassDef */;
1090 val* var152 /* : MClassDef */;
1091 val* var153 /* : MClass */;
1092 val* var155 /* : MClass */;
1093 short int var156 /* : Bool */;
1094 short int var158 /* : Bool */;
1095 short int var160 /* : Bool */;
1096 var_mclasses = p0;
1097 var1 = NEW_core__HashMap(&type_core__HashMap__nitc__MClass__core__Array__nullable__nitc__MPropDef);
1098 {
1099 core___core__HashMap___core__kernel__Object__init(var1); /* Direct call hash_collection$HashMap$init on <var1:HashMap[MClass, Array[nullable MPropDef]]>*/
1100 }
1101 var_tables = var1;
1102 var_ = var_mclasses;
1103 {
1104 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_:Set[MClass]>*/
1105 }
1106 var_3 = var2;
1107 for(;;) {
1108 {
1109 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[MClass]>*/
1110 }
1111 if (var4){
1112 } else {
1113 goto BREAK_label;
1114 }
1115 {
1116 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[MClass]>*/
1117 }
1118 var_mclass = var5;
1119 var6 = NEW_core__Array(&type_core__Array__nullable__nitc__MPropDef);
1120 {
1121 core___core__Array___core__kernel__Object__init(var6); /* Direct call array$Array$init on <var6:Array[nullable MPropDef]>*/
1122 }
1123 var_table = var6;
1124 var7 = NEW_core__Array(&type_core__Array__nitc__MClass);
1125 {
1126 core___core__Array___core__kernel__Object__init(var7); /* Direct call array$Array$init on <var7:Array[MClass]>*/
1127 }
1128 var_parents = var7;
1129 {
1130 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:SeparateErasureCompiler> */
1131 var10 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
1132 if (unlikely(var10 == NULL)) {
1133 if(catchStack.cursor >= 0){
1134 longjmp(catchStack.envs[catchStack.cursor], 1);
1135 }
1136 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1137 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
1138 fatal_exit(1);
1139 }
1140 var8 = var10;
1141 RET_LABEL9:(void)0;
1142 }
1143 }
1144 {
1145 var11 = nitc__model___MModule___flatten_mclass_hierarchy(var8);
1146 }
1147 {
1148 var12 = poset___poset__POSet___core__abstract_collection__Collection__has(var11, var_mclass);
1149 }
1150 if (var12){
1151 {
1152 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:SeparateErasureCompiler> */
1153 var15 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
1154 if (unlikely(var15 == NULL)) {
1155 if(catchStack.cursor >= 0){
1156 longjmp(catchStack.envs[catchStack.cursor], 1);
1157 }
1158 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1159 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
1160 fatal_exit(1);
1161 }
1162 var13 = var15;
1163 RET_LABEL14:(void)0;
1164 }
1165 }
1166 {
1167 var16 = nitc___nitc__MClass___in_hierarchy(var_mclass, var13);
1168 }
1169 {
1170 var17 = poset___poset__POSetElement___greaters(var16);
1171 }
1172 {
1173 var18 = ((val*(*)(val* self))((((long)var17&3)?class_info[((long)var17&3)]:var17->class)->vft[COLOR_core__array__Collection__to_a]))(var17); /* to_a on <var17:Collection[nullable Object](Collection[MClass])>*/
1174 }
1175 var_parents = var18;
1176 {
1177 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:SeparateErasureCompiler> */
1178 var21 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
1179 if (unlikely(var21 == NULL)) {
1180 if(catchStack.cursor >= 0){
1181 longjmp(catchStack.envs[catchStack.cursor], 1);
1182 }
1183 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1184 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
1185 fatal_exit(1);
1186 }
1187 var19 = var21;
1188 RET_LABEL20:(void)0;
1189 }
1190 }
1191 {
1192 nitc__model___MModule___linearize_mclasses(var19, var_parents); /* Direct call model$MModule$linearize_mclasses on <var19:MModule>*/
1193 }
1194 } else {
1195 }
1196 var_22 = var_parents;
1197 {
1198 var23 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_22);
1199 }
1200 var_24 = var23;
1201 for(;;) {
1202 {
1203 var25 = ((short int(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_24); /* is_ok on <var_24:IndexedIterator[MClass]>*/
1204 }
1205 if (var25){
1206 } else {
1207 goto BREAK_label26;
1208 }
1209 {
1210 var27 = ((val*(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_24); /* item on <var_24:IndexedIterator[MClass]>*/
1211 }
1212 var_parent = var27;
1213 {
1214 { /* Inline kernel$Object$== (var_parent,var_mclass) on <var_parent:MClass> */
1215 var_other = var_mclass;
1216 {
1217 { /* Inline kernel$Object$is_same_instance (var_parent,var_other) on <var_parent:MClass> */
1218 var32 = var_parent == var_other;
1219 var30 = var32;
1220 goto RET_LABEL31;
1221 RET_LABEL31:(void)0;
1222 }
1223 }
1224 var28 = var30;
1225 goto RET_LABEL29;
1226 RET_LABEL29:(void)0;
1227 }
1228 }
1229 if (var28){
1230 goto BREAK_label33;
1231 } else {
1232 }
1233 {
1234 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:SeparateErasureCompiler> */
1235 var36 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
1236 if (unlikely(var36 == NULL)) {
1237 if(catchStack.cursor >= 0){
1238 longjmp(catchStack.envs[catchStack.cursor], 1);
1239 }
1240 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1241 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
1242 fatal_exit(1);
1243 }
1244 var34 = var36;
1245 RET_LABEL35:(void)0;
1246 }
1247 }
1248 {
1249 var37 = nitc__abstract_compiler___MModule___properties(var34, var_parent);
1250 }
1251 var_38 = var37;
1252 {
1253 var39 = ((val*(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_38); /* iterator on <var_38:Set[MProperty]>*/
1254 }
1255 var_40 = var39;
1256 for(;;) {
1257 {
1258 var41 = ((short int(*)(val* self))((((long)var_40&3)?class_info[((long)var_40&3)]:var_40->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_40); /* is_ok on <var_40:Iterator[MProperty]>*/
1259 }
1260 if (var41){
1261 } else {
1262 goto BREAK_label42;
1263 }
1264 {
1265 var43 = ((val*(*)(val* self))((((long)var_40&3)?class_info[((long)var_40&3)]:var_40->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_40); /* item on <var_40:Iterator[MProperty]>*/
1266 }
1267 var_mproperty = var43;
1268 /* <var_mproperty:MProperty> isa MVirtualTypeProp */
1269 cltype = type_nitc__MVirtualTypeProp.color;
1270 idtype = type_nitc__MVirtualTypeProp.id;
1271 if(cltype >= var_mproperty->type->table_size) {
1272 var44 = 0;
1273 } else {
1274 var44 = var_mproperty->type->type_table[cltype] == idtype;
1275 }
1276 var45 = !var44;
1277 if (var45){
1278 goto BREAK_label46;
1279 } else {
1280 }
1281 {
1282 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$vt_colors (self) on <self:SeparateErasureCompiler> */
1283 var49 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val; /* _vt_colors on <self:SeparateErasureCompiler> */
1284 if (unlikely(var49 == NULL)) {
1285 if(catchStack.cursor >= 0){
1286 longjmp(catchStack.envs[catchStack.cursor], 1);
1287 }
1288 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
1289 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 86);
1290 fatal_exit(1);
1291 }
1292 var47 = var49;
1293 RET_LABEL48:(void)0;
1294 }
1295 }
1296 {
1297 var50 = ((val*(*)(val* self, val* p0))((((long)var47&3)?class_info[((long)var47&3)]:var47->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var47, var_mproperty); /* [] on <var47:Map[MVirtualTypeProp, Int]>*/
1298 }
1299 var51 = (long)(var50)>>2;
1300 var_color = var51;
1301 {
1302 { /* Inline array$AbstractArrayRead$length (var_table) on <var_table:Array[nullable MPropDef]> */
1303 var54 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MPropDef]> */
1304 var52 = var54;
1305 RET_LABEL53:(void)0;
1306 }
1307 }
1308 {
1309 { /* Inline kernel$Int$<= (var52,var_color) on <var52:Int> */
1310 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
1311 /* <var_color:Int> isa OTHER */
1312 var57 = 1; /* easy <var_color:Int> isa OTHER*/
1313 if (unlikely(!var57)) {
1314 var_class_name = type_core__Int.name;
1315 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1316 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
1317 fatal_exit(1);
1318 }
1319 var60 = var52 <= var_color;
1320 var55 = var60;
1321 goto RET_LABEL56;
1322 RET_LABEL56:(void)0;
1323 }
1324 }
1325 if (var55){
1326 {
1327 { /* Inline array$AbstractArrayRead$length (var_table) on <var_table:Array[nullable MPropDef]> */
1328 var63 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MPropDef]> */
1329 var61 = var63;
1330 RET_LABEL62:(void)0;
1331 }
1332 }
1333 var_i = var61;
1334 var_64 = var_color;
1335 for(;;) {
1336 {
1337 { /* Inline kernel$Int$< (var_i,var_64) on <var_i:Int> */
1338 /* Covariant cast for argument 0 (i) <var_64:Int> isa OTHER */
1339 /* <var_64:Int> isa OTHER */
1340 var67 = 1; /* easy <var_64:Int> isa OTHER*/
1341 if (unlikely(!var67)) {
1342 var_class_name70 = type_core__Int.name;
1343 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name70);
1344 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
1345 fatal_exit(1);
1346 }
1347 var71 = var_i < var_64;
1348 var65 = var71;
1349 goto RET_LABEL66;
1350 RET_LABEL66:(void)0;
1351 }
1352 }
1353 if (var65){
1354 } else {
1355 goto BREAK_label72;
1356 }
1357 {
1358 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_table, var_i, ((val*)NULL)); /* Direct call array$Array$[]= on <var_table:Array[nullable MPropDef]>*/
1359 }
1360 {
1361 var73 = core___core__Int___Discrete__successor(var_i, 1l);
1362 }
1363 var_i = var73;
1364 }
1365 BREAK_label72: (void)0;
1366 } else {
1367 }
1368 {
1369 { /* Inline model$MProperty$mpropdefs (var_mproperty) on <var_mproperty:MProperty(MVirtualTypeProp)> */
1370 var76 = var_mproperty->attrs[COLOR_nitc__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MProperty(MVirtualTypeProp)> */
1371 if (unlikely(var76 == NULL)) {
1372 if(catchStack.cursor >= 0){
1373 longjmp(catchStack.envs[catchStack.cursor], 1);
1374 }
1375 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
1376 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2092);
1377 fatal_exit(1);
1378 }
1379 var74 = var76;
1380 RET_LABEL75:(void)0;
1381 }
1382 }
1383 var_77 = var74;
1384 {
1385 var78 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_77);
1386 }
1387 var_79 = var78;
1388 for(;;) {
1389 {
1390 var80 = ((short int(*)(val* self))((((long)var_79&3)?class_info[((long)var_79&3)]:var_79->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_79); /* is_ok on <var_79:IndexedIterator[MVirtualTypeDef]>*/
1391 }
1392 if (var80){
1393 } else {
1394 goto BREAK_label81;
1395 }
1396 {
1397 var82 = ((val*(*)(val* self))((((long)var_79&3)?class_info[((long)var_79&3)]:var_79->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_79); /* item on <var_79:IndexedIterator[MVirtualTypeDef]>*/
1398 }
1399 var_mpropdef = var82;
1400 {
1401 { /* Inline model$MPropDef$mclassdef (var_mpropdef) on <var_mpropdef:MVirtualTypeDef> */
1402 var85 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MVirtualTypeDef> */
1403 if (unlikely(var85 == NULL)) {
1404 if(catchStack.cursor >= 0){
1405 longjmp(catchStack.envs[catchStack.cursor], 1);
1406 }
1407 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1408 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
1409 fatal_exit(1);
1410 }
1411 var83 = var85;
1412 RET_LABEL84:(void)0;
1413 }
1414 }
1415 {
1416 { /* Inline model$MClassDef$mclass (var83) on <var83:MClassDef> */
1417 var88 = var83->attrs[COLOR_nitc__model__MClassDef___mclass].val; /* _mclass on <var83:MClassDef> */
1418 if (unlikely(var88 == NULL)) {
1419 if(catchStack.cursor >= 0){
1420 longjmp(catchStack.envs[catchStack.cursor], 1);
1421 }
1422 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1423 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 591);
1424 fatal_exit(1);
1425 }
1426 var86 = var88;
1427 RET_LABEL87:(void)0;
1428 }
1429 }
1430 {
1431 { /* Inline kernel$Object$== (var86,var_parent) on <var86:MClass> */
1432 var_other = var_parent;
1433 {
1434 { /* Inline kernel$Object$is_same_instance (var86,var_other) on <var86:MClass> */
1435 var93 = var86 == var_other;
1436 var91 = var93;
1437 goto RET_LABEL92;
1438 RET_LABEL92:(void)0;
1439 }
1440 }
1441 var89 = var91;
1442 goto RET_LABEL90;
1443 RET_LABEL90:(void)0;
1444 }
1445 }
1446 if (var89){
1447 {
1448 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_table, var_color, var_mpropdef); /* Direct call array$Array$[]= on <var_table:Array[nullable MPropDef]>*/
1449 }
1450 } else {
1451 }
1452 {
1453 ((void(*)(val* self))((((long)var_79&3)?class_info[((long)var_79&3)]:var_79->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_79); /* next on <var_79:IndexedIterator[MVirtualTypeDef]>*/
1454 }
1455 }
1456 BREAK_label81: (void)0;
1457 {
1458 ((void(*)(val* self))((((long)var_79&3)?class_info[((long)var_79&3)]:var_79->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_79); /* finish on <var_79:IndexedIterator[MVirtualTypeDef]>*/
1459 }
1460 BREAK_label46: (void)0;
1461 {
1462 ((void(*)(val* self))((((long)var_40&3)?class_info[((long)var_40&3)]:var_40->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_40); /* next on <var_40:Iterator[MProperty]>*/
1463 }
1464 }
1465 BREAK_label42: (void)0;
1466 {
1467 ((void(*)(val* self))((((long)var_40&3)?class_info[((long)var_40&3)]:var_40->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_40); /* finish on <var_40:Iterator[MProperty]>*/
1468 }
1469 BREAK_label33: (void)0;
1470 {
1471 ((void(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_24); /* next on <var_24:IndexedIterator[MClass]>*/
1472 }
1473 }
1474 BREAK_label26: (void)0;
1475 {
1476 ((void(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_24); /* finish on <var_24:IndexedIterator[MClass]>*/
1477 }
1478 {
1479 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:SeparateErasureCompiler> */
1480 var96 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
1481 if (unlikely(var96 == NULL)) {
1482 if(catchStack.cursor >= 0){
1483 longjmp(catchStack.envs[catchStack.cursor], 1);
1484 }
1485 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1486 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
1487 fatal_exit(1);
1488 }
1489 var94 = var96;
1490 RET_LABEL95:(void)0;
1491 }
1492 }
1493 {
1494 var97 = nitc__abstract_compiler___MModule___properties(var94, var_mclass);
1495 }
1496 var_98 = var97;
1497 {
1498 var99 = ((val*(*)(val* self))((((long)var_98&3)?class_info[((long)var_98&3)]:var_98->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_98); /* iterator on <var_98:Set[MProperty]>*/
1499 }
1500 var_100 = var99;
1501 for(;;) {
1502 {
1503 var101 = ((short int(*)(val* self))((((long)var_100&3)?class_info[((long)var_100&3)]:var_100->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_100); /* is_ok on <var_100:Iterator[MProperty]>*/
1504 }
1505 if (var101){
1506 } else {
1507 goto BREAK_label102;
1508 }
1509 {
1510 var103 = ((val*(*)(val* self))((((long)var_100&3)?class_info[((long)var_100&3)]:var_100->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_100); /* item on <var_100:Iterator[MProperty]>*/
1511 }
1512 var_mproperty104 = var103;
1513 /* <var_mproperty104:MProperty> isa MVirtualTypeProp */
1514 cltype106 = type_nitc__MVirtualTypeProp.color;
1515 idtype107 = type_nitc__MVirtualTypeProp.id;
1516 if(cltype106 >= var_mproperty104->type->table_size) {
1517 var105 = 0;
1518 } else {
1519 var105 = var_mproperty104->type->type_table[cltype106] == idtype107;
1520 }
1521 var108 = !var105;
1522 if (var108){
1523 goto BREAK_label109;
1524 } else {
1525 }
1526 {
1527 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$vt_colors (self) on <self:SeparateErasureCompiler> */
1528 var112 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val; /* _vt_colors on <self:SeparateErasureCompiler> */
1529 if (unlikely(var112 == NULL)) {
1530 if(catchStack.cursor >= 0){
1531 longjmp(catchStack.envs[catchStack.cursor], 1);
1532 }
1533 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
1534 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 86);
1535 fatal_exit(1);
1536 }
1537 var110 = var112;
1538 RET_LABEL111:(void)0;
1539 }
1540 }
1541 {
1542 var113 = ((val*(*)(val* self, val* p0))((((long)var110&3)?class_info[((long)var110&3)]:var110->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var110, var_mproperty104); /* [] on <var110:Map[MVirtualTypeProp, Int]>*/
1543 }
1544 var114 = (long)(var113)>>2;
1545 var_color115 = var114;
1546 {
1547 { /* Inline array$AbstractArrayRead$length (var_table) on <var_table:Array[nullable MPropDef]> */
1548 var118 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MPropDef]> */
1549 var116 = var118;
1550 RET_LABEL117:(void)0;
1551 }
1552 }
1553 {
1554 { /* Inline kernel$Int$<= (var116,var_color115) on <var116:Int> */
1555 /* Covariant cast for argument 0 (i) <var_color115:Int> isa OTHER */
1556 /* <var_color115:Int> isa OTHER */
1557 var121 = 1; /* easy <var_color115:Int> isa OTHER*/
1558 if (unlikely(!var121)) {
1559 var_class_name124 = type_core__Int.name;
1560 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name124);
1561 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
1562 fatal_exit(1);
1563 }
1564 var125 = var116 <= var_color115;
1565 var119 = var125;
1566 goto RET_LABEL120;
1567 RET_LABEL120:(void)0;
1568 }
1569 }
1570 if (var119){
1571 {
1572 { /* Inline array$AbstractArrayRead$length (var_table) on <var_table:Array[nullable MPropDef]> */
1573 var128 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MPropDef]> */
1574 var126 = var128;
1575 RET_LABEL127:(void)0;
1576 }
1577 }
1578 var_i129 = var126;
1579 var_130 = var_color115;
1580 for(;;) {
1581 {
1582 { /* Inline kernel$Int$< (var_i129,var_130) on <var_i129:Int> */
1583 /* Covariant cast for argument 0 (i) <var_130:Int> isa OTHER */
1584 /* <var_130:Int> isa OTHER */
1585 var133 = 1; /* easy <var_130:Int> isa OTHER*/
1586 if (unlikely(!var133)) {
1587 var_class_name136 = type_core__Int.name;
1588 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name136);
1589 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
1590 fatal_exit(1);
1591 }
1592 var137 = var_i129 < var_130;
1593 var131 = var137;
1594 goto RET_LABEL132;
1595 RET_LABEL132:(void)0;
1596 }
1597 }
1598 if (var131){
1599 } else {
1600 goto BREAK_label138;
1601 }
1602 {
1603 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_table, var_i129, ((val*)NULL)); /* Direct call array$Array$[]= on <var_table:Array[nullable MPropDef]>*/
1604 }
1605 {
1606 var139 = core___core__Int___Discrete__successor(var_i129, 1l);
1607 }
1608 var_i129 = var139;
1609 }
1610 BREAK_label138: (void)0;
1611 } else {
1612 }
1613 {
1614 { /* Inline model$MProperty$mpropdefs (var_mproperty104) on <var_mproperty104:MProperty(MVirtualTypeProp)> */
1615 var142 = var_mproperty104->attrs[COLOR_nitc__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty104:MProperty(MVirtualTypeProp)> */
1616 if (unlikely(var142 == NULL)) {
1617 if(catchStack.cursor >= 0){
1618 longjmp(catchStack.envs[catchStack.cursor], 1);
1619 }
1620 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
1621 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2092);
1622 fatal_exit(1);
1623 }
1624 var140 = var142;
1625 RET_LABEL141:(void)0;
1626 }
1627 }
1628 var_143 = var140;
1629 {
1630 var144 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_143);
1631 }
1632 var_145 = var144;
1633 for(;;) {
1634 {
1635 var146 = ((short int(*)(val* self))((((long)var_145&3)?class_info[((long)var_145&3)]:var_145->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_145); /* is_ok on <var_145:IndexedIterator[MVirtualTypeDef]>*/
1636 }
1637 if (var146){
1638 } else {
1639 goto BREAK_label147;
1640 }
1641 {
1642 var148 = ((val*(*)(val* self))((((long)var_145&3)?class_info[((long)var_145&3)]:var_145->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_145); /* item on <var_145:IndexedIterator[MVirtualTypeDef]>*/
1643 }
1644 var_mpropdef149 = var148;
1645 {
1646 { /* Inline model$MPropDef$mclassdef (var_mpropdef149) on <var_mpropdef149:MVirtualTypeDef> */
1647 var152 = var_mpropdef149->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef149:MVirtualTypeDef> */
1648 if (unlikely(var152 == NULL)) {
1649 if(catchStack.cursor >= 0){
1650 longjmp(catchStack.envs[catchStack.cursor], 1);
1651 }
1652 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1653 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
1654 fatal_exit(1);
1655 }
1656 var150 = var152;
1657 RET_LABEL151:(void)0;
1658 }
1659 }
1660 {
1661 { /* Inline model$MClassDef$mclass (var150) on <var150:MClassDef> */
1662 var155 = var150->attrs[COLOR_nitc__model__MClassDef___mclass].val; /* _mclass on <var150:MClassDef> */
1663 if (unlikely(var155 == NULL)) {
1664 if(catchStack.cursor >= 0){
1665 longjmp(catchStack.envs[catchStack.cursor], 1);
1666 }
1667 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1668 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 591);
1669 fatal_exit(1);
1670 }
1671 var153 = var155;
1672 RET_LABEL154:(void)0;
1673 }
1674 }
1675 {
1676 { /* Inline kernel$Object$== (var153,var_mclass) on <var153:MClass> */
1677 var_other = var_mclass;
1678 {
1679 { /* Inline kernel$Object$is_same_instance (var153,var_other) on <var153:MClass> */
1680 var160 = var153 == var_other;
1681 var158 = var160;
1682 goto RET_LABEL159;
1683 RET_LABEL159:(void)0;
1684 }
1685 }
1686 var156 = var158;
1687 goto RET_LABEL157;
1688 RET_LABEL157:(void)0;
1689 }
1690 }
1691 if (var156){
1692 {
1693 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_table, var_color115, var_mpropdef149); /* Direct call array$Array$[]= on <var_table:Array[nullable MPropDef]>*/
1694 }
1695 } else {
1696 }
1697 {
1698 ((void(*)(val* self))((((long)var_145&3)?class_info[((long)var_145&3)]:var_145->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_145); /* next on <var_145:IndexedIterator[MVirtualTypeDef]>*/
1699 }
1700 }
1701 BREAK_label147: (void)0;
1702 {
1703 ((void(*)(val* self))((((long)var_145&3)?class_info[((long)var_145&3)]:var_145->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_145); /* finish on <var_145:IndexedIterator[MVirtualTypeDef]>*/
1704 }
1705 BREAK_label109: (void)0;
1706 {
1707 ((void(*)(val* self))((((long)var_100&3)?class_info[((long)var_100&3)]:var_100->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_100); /* next on <var_100:Iterator[MProperty]>*/
1708 }
1709 }
1710 BREAK_label102: (void)0;
1711 {
1712 ((void(*)(val* self))((((long)var_100&3)?class_info[((long)var_100&3)]:var_100->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_100); /* finish on <var_100:Iterator[MProperty]>*/
1713 }
1714 {
1715 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_tables, var_mclass, var_table); /* Direct call hash_collection$HashMap$[]= on <var_tables:HashMap[MClass, Array[nullable MPropDef]]>*/
1716 }
1717 {
1718 ((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[MClass]>*/
1719 }
1720 }
1721 BREAK_label: (void)0;
1722 {
1723 ((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[MClass]>*/
1724 }
1725 var = var_tables;
1726 goto RET_LABEL;
1727 RET_LABEL:;
1728 return var;
1729 }
1730 /* method separate_erasure_compiler$SeparateErasureCompiler$build_class_typing_tables for (self: SeparateErasureCompiler, Set[MClass]): Map[MClass, Array[nullable MClass]] */
1731 val* nitc___nitc__SeparateErasureCompiler___build_class_typing_tables(val* self, val* p0) {
1732 val* var /* : Map[MClass, Array[nullable MClass]] */;
1733 val* var_mclasses /* var mclasses: Set[MClass] */;
1734 val* var1 /* : HashMap[MClass, Array[nullable MClass]] */;
1735 val* var_tables /* var tables: HashMap[MClass, Array[nullable MClass]] */;
1736 val* var_ /* var : Set[MClass] */;
1737 val* var2 /* : Iterator[nullable Object] */;
1738 val* var_3 /* var : Iterator[MClass] */;
1739 short int var4 /* : Bool */;
1740 val* var5 /* : nullable Object */;
1741 val* var_mclass /* var mclass: MClass */;
1742 val* var6 /* : Array[nullable MClass] */;
1743 val* var_table /* var table: Array[nullable MClass] */;
1744 val* var7 /* : Array[MClass] */;
1745 val* var_supers /* var supers: Array[MClass] */;
1746 val* var8 /* : MModule */;
1747 val* var10 /* : MModule */;
1748 val* var11 /* : POSet[MClass] */;
1749 short int var12 /* : Bool */;
1750 val* var13 /* : MModule */;
1751 val* var15 /* : MModule */;
1752 val* var16 /* : POSetElement[MClass] */;
1753 val* var17 /* : Collection[nullable Object] */;
1754 val* var18 /* : Array[nullable Object] */;
1755 val* var_19 /* var : Array[MClass] */;
1756 val* var20 /* : IndexedIterator[nullable Object] */;
1757 val* var_21 /* var : IndexedIterator[MClass] */;
1758 short int var22 /* : Bool */;
1759 val* var24 /* : nullable Object */;
1760 val* var_sup /* var sup: MClass */;
1761 val* var25 /* : Map[MClass, Int] */;
1762 val* var27 /* : Map[MClass, Int] */;
1763 val* var28 /* : nullable Object */;
1764 long var29 /* : Int */;
1765 long var_color /* var color: Int */;
1766 long var30 /* : Int */;
1767 long var32 /* : Int */;
1768 short int var33 /* : Bool */;
1769 short int var35 /* : Bool */;
1770 int cltype;
1771 int idtype;
1772 const char* var_class_name;
1773 short int var36 /* : Bool */;
1774 long var37 /* : Int */;
1775 long var39 /* : Int */;
1776 long var_i /* var i: Int */;
1777 long var_40 /* var : Int */;
1778 short int var41 /* : Bool */;
1779 short int var43 /* : Bool */;
1780 int cltype44;
1781 int idtype45;
1782 const char* var_class_name46;
1783 short int var47 /* : Bool */;
1784 long var49 /* : Int */;
1785 var_mclasses = p0;
1786 var1 = NEW_core__HashMap(&type_core__HashMap__nitc__MClass__core__Array__nullable__nitc__MClass);
1787 {
1788 core___core__HashMap___core__kernel__Object__init(var1); /* Direct call hash_collection$HashMap$init on <var1:HashMap[MClass, Array[nullable MClass]]>*/
1789 }
1790 var_tables = var1;
1791 var_ = var_mclasses;
1792 {
1793 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_:Set[MClass]>*/
1794 }
1795 var_3 = var2;
1796 for(;;) {
1797 {
1798 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[MClass]>*/
1799 }
1800 if (var4){
1801 } else {
1802 goto BREAK_label;
1803 }
1804 {
1805 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[MClass]>*/
1806 }
1807 var_mclass = var5;
1808 var6 = NEW_core__Array(&type_core__Array__nullable__nitc__MClass);
1809 {
1810 core___core__Array___core__kernel__Object__init(var6); /* Direct call array$Array$init on <var6:Array[nullable MClass]>*/
1811 }
1812 var_table = var6;
1813 var7 = NEW_core__Array(&type_core__Array__nitc__MClass);
1814 {
1815 core___core__Array___core__kernel__Object__init(var7); /* Direct call array$Array$init on <var7:Array[MClass]>*/
1816 }
1817 var_supers = var7;
1818 {
1819 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:SeparateErasureCompiler> */
1820 var10 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
1821 if (unlikely(var10 == NULL)) {
1822 if(catchStack.cursor >= 0){
1823 longjmp(catchStack.envs[catchStack.cursor], 1);
1824 }
1825 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1826 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
1827 fatal_exit(1);
1828 }
1829 var8 = var10;
1830 RET_LABEL9:(void)0;
1831 }
1832 }
1833 {
1834 var11 = nitc__model___MModule___flatten_mclass_hierarchy(var8);
1835 }
1836 {
1837 var12 = poset___poset__POSet___core__abstract_collection__Collection__has(var11, var_mclass);
1838 }
1839 if (var12){
1840 {
1841 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:SeparateErasureCompiler> */
1842 var15 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
1843 if (unlikely(var15 == NULL)) {
1844 if(catchStack.cursor >= 0){
1845 longjmp(catchStack.envs[catchStack.cursor], 1);
1846 }
1847 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1848 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
1849 fatal_exit(1);
1850 }
1851 var13 = var15;
1852 RET_LABEL14:(void)0;
1853 }
1854 }
1855 {
1856 var16 = nitc___nitc__MClass___in_hierarchy(var_mclass, var13);
1857 }
1858 {
1859 var17 = poset___poset__POSetElement___greaters(var16);
1860 }
1861 {
1862 var18 = ((val*(*)(val* self))((((long)var17&3)?class_info[((long)var17&3)]:var17->class)->vft[COLOR_core__array__Collection__to_a]))(var17); /* to_a on <var17:Collection[nullable Object](Collection[MClass])>*/
1863 }
1864 var_supers = var18;
1865 } else {
1866 }
1867 var_19 = var_supers;
1868 {
1869 var20 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_19);
1870 }
1871 var_21 = var20;
1872 for(;;) {
1873 {
1874 var22 = ((short int(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_21); /* is_ok on <var_21:IndexedIterator[MClass]>*/
1875 }
1876 if (var22){
1877 } else {
1878 goto BREAK_label23;
1879 }
1880 {
1881 var24 = ((val*(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_21); /* item on <var_21:IndexedIterator[MClass]>*/
1882 }
1883 var_sup = var24;
1884 {
1885 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$class_colors (self) on <self:SeparateErasureCompiler> */
1886 var27 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_colors].val; /* _class_colors on <self:SeparateErasureCompiler> */
1887 if (unlikely(var27 == NULL)) {
1888 if(catchStack.cursor >= 0){
1889 longjmp(catchStack.envs[catchStack.cursor], 1);
1890 }
1891 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_colors");
1892 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 85);
1893 fatal_exit(1);
1894 }
1895 var25 = var27;
1896 RET_LABEL26:(void)0;
1897 }
1898 }
1899 {
1900 var28 = ((val*(*)(val* self, val* p0))((((long)var25&3)?class_info[((long)var25&3)]:var25->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var25, var_sup); /* [] on <var25:Map[MClass, Int]>*/
1901 }
1902 var29 = (long)(var28)>>2;
1903 var_color = var29;
1904 {
1905 { /* Inline array$AbstractArrayRead$length (var_table) on <var_table:Array[nullable MClass]> */
1906 var32 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MClass]> */
1907 var30 = var32;
1908 RET_LABEL31:(void)0;
1909 }
1910 }
1911 {
1912 { /* Inline kernel$Int$<= (var30,var_color) on <var30:Int> */
1913 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
1914 /* <var_color:Int> isa OTHER */
1915 var35 = 1; /* easy <var_color:Int> isa OTHER*/
1916 if (unlikely(!var35)) {
1917 var_class_name = type_core__Int.name;
1918 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1919 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
1920 fatal_exit(1);
1921 }
1922 var36 = var30 <= var_color;
1923 var33 = var36;
1924 goto RET_LABEL34;
1925 RET_LABEL34:(void)0;
1926 }
1927 }
1928 if (var33){
1929 {
1930 { /* Inline array$AbstractArrayRead$length (var_table) on <var_table:Array[nullable MClass]> */
1931 var39 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MClass]> */
1932 var37 = var39;
1933 RET_LABEL38:(void)0;
1934 }
1935 }
1936 var_i = var37;
1937 var_40 = var_color;
1938 for(;;) {
1939 {
1940 { /* Inline kernel$Int$< (var_i,var_40) on <var_i:Int> */
1941 /* Covariant cast for argument 0 (i) <var_40:Int> isa OTHER */
1942 /* <var_40:Int> isa OTHER */
1943 var43 = 1; /* easy <var_40:Int> isa OTHER*/
1944 if (unlikely(!var43)) {
1945 var_class_name46 = type_core__Int.name;
1946 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name46);
1947 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
1948 fatal_exit(1);
1949 }
1950 var47 = var_i < var_40;
1951 var41 = var47;
1952 goto RET_LABEL42;
1953 RET_LABEL42:(void)0;
1954 }
1955 }
1956 if (var41){
1957 } else {
1958 goto BREAK_label48;
1959 }
1960 {
1961 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_table, var_i, ((val*)NULL)); /* Direct call array$Array$[]= on <var_table:Array[nullable MClass]>*/
1962 }
1963 {
1964 var49 = core___core__Int___Discrete__successor(var_i, 1l);
1965 }
1966 var_i = var49;
1967 }
1968 BREAK_label48: (void)0;
1969 } else {
1970 }
1971 {
1972 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_table, var_color, var_sup); /* Direct call array$Array$[]= on <var_table:Array[nullable MClass]>*/
1973 }
1974 {
1975 ((void(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_21); /* next on <var_21:IndexedIterator[MClass]>*/
1976 }
1977 }
1978 BREAK_label23: (void)0;
1979 {
1980 ((void(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_21); /* finish on <var_21:IndexedIterator[MClass]>*/
1981 }
1982 {
1983 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_tables, var_mclass, var_table); /* Direct call hash_collection$HashMap$[]= on <var_tables:HashMap[MClass, Array[nullable MClass]]>*/
1984 }
1985 {
1986 ((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[MClass]>*/
1987 }
1988 }
1989 BREAK_label: (void)0;
1990 {
1991 ((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[MClass]>*/
1992 }
1993 var = var_tables;
1994 goto RET_LABEL;
1995 RET_LABEL:;
1996 return var;
1997 }
1998 /* method separate_erasure_compiler$SeparateErasureCompiler$compile_header_structs for (self: SeparateErasureCompiler) */
1999 void nitc___nitc__SeparateErasureCompiler___nitc__abstract_compiler__AbstractCompiler__compile_header_structs(val* self) {
2000 val* var /* : CodeWriter */;
2001 val* var2 /* : CodeWriter */;
2002 static val* varonce;
2003 val* var3 /* : String */;
2004 char* var4 /* : CString */;
2005 val* var5 /* : String */;
2006 val* var6 /* : nullable Int */;
2007 val* var7 /* : nullable Int */;
2008 val* var8 /* : nullable Bool */;
2009 val* var9 /* : nullable Bool */;
2010 val* var10 /* : CodeWriter */;
2011 val* var12 /* : CodeWriter */;
2012 static val* varonce13;
2013 val* var14 /* : String */;
2014 char* var15 /* : CString */;
2015 val* var16 /* : String */;
2016 val* var17 /* : nullable Int */;
2017 val* var18 /* : nullable Int */;
2018 val* var19 /* : nullable Bool */;
2019 val* var20 /* : nullable Bool */;
2020 val* var21 /* : CodeWriter */;
2021 val* var23 /* : CodeWriter */;
2022 static val* varonce24;
2023 val* var25 /* : String */;
2024 char* var26 /* : CString */;
2025 val* var27 /* : String */;
2026 val* var28 /* : nullable Int */;
2027 val* var29 /* : nullable Int */;
2028 val* var30 /* : nullable Bool */;
2029 val* var31 /* : nullable Bool */;
2030 val* var32 /* : CodeWriter */;
2031 val* var34 /* : CodeWriter */;
2032 static val* varonce35;
2033 val* var36 /* : String */;
2034 char* var37 /* : CString */;
2035 val* var38 /* : String */;
2036 val* var39 /* : nullable Int */;
2037 val* var40 /* : nullable Int */;
2038 val* var41 /* : nullable Bool */;
2039 val* var42 /* : nullable Bool */;
2040 val* var43 /* : CodeWriter */;
2041 val* var45 /* : CodeWriter */;
2042 static val* varonce46;
2043 val* var47 /* : String */;
2044 char* var48 /* : CString */;
2045 val* var49 /* : String */;
2046 val* var50 /* : nullable Int */;
2047 val* var51 /* : nullable Int */;
2048 val* var52 /* : nullable Bool */;
2049 val* var53 /* : nullable Bool */;
2050 val* var54 /* : CodeWriter */;
2051 val* var56 /* : CodeWriter */;
2052 static val* varonce57;
2053 val* var58 /* : String */;
2054 char* var59 /* : CString */;
2055 val* var60 /* : String */;
2056 val* var61 /* : nullable Int */;
2057 val* var62 /* : nullable Int */;
2058 val* var63 /* : nullable Bool */;
2059 val* var64 /* : nullable Bool */;
2060 {
2061 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
2062 var2 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
2063 if (unlikely(var2 == NULL)) {
2064 if(catchStack.cursor >= 0){
2065 longjmp(catchStack.envs[catchStack.cursor], 1);
2066 }
2067 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2068 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
2069 fatal_exit(1);
2070 }
2071 var = var2;
2072 RET_LABEL1:(void)0;
2073 }
2074 }
2075 if (likely(varonce!=NULL)) {
2076 var3 = varonce;
2077 } else {
2078 var4 = "typedef void(*nitmethod_t)(void); /* general C type representing a Nit method. */";
2079 var6 = (val*)(81l<<2|1);
2080 var7 = (val*)(81l<<2|1);
2081 var8 = (val*)((long)(0)<<2|3);
2082 var9 = (val*)((long)(0)<<2|3);
2083 var5 = core__flat___CString___to_s_unsafe(var4, var6, var7, var8, var9);
2084 var3 = var5;
2085 varonce = var3;
2086 }
2087 {
2088 nitc___nitc__CodeWriter___add_decl(var, var3); /* Direct call abstract_compiler$CodeWriter$add_decl on <var:CodeWriter>*/
2089 }
2090 {
2091 nitc___nitc__SeparateCompiler___compile_header_attribute_structs(self); /* Direct call separate_compiler$SeparateCompiler$compile_header_attribute_structs on <self:SeparateErasureCompiler>*/
2092 }
2093 {
2094 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
2095 var12 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
2096 if (unlikely(var12 == NULL)) {
2097 if(catchStack.cursor >= 0){
2098 longjmp(catchStack.envs[catchStack.cursor], 1);
2099 }
2100 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2101 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
2102 fatal_exit(1);
2103 }
2104 var10 = var12;
2105 RET_LABEL11:(void)0;
2106 }
2107 }
2108 if (likely(varonce13!=NULL)) {
2109 var14 = varonce13;
2110 } else {
2111 var15 = "struct class { int id; const char *name; int box_kind; int color; const struct vts_table *vts_table; const struct type_table *type_table; nitmethod_t vft[]; }; /* general C type representing a Nit class. */";
2112 var17 = (val*)(206l<<2|1);
2113 var18 = (val*)(206l<<2|1);
2114 var19 = (val*)((long)(0)<<2|3);
2115 var20 = (val*)((long)(0)<<2|3);
2116 var16 = core__flat___CString___to_s_unsafe(var15, var17, var18, var19, var20);
2117 var14 = var16;
2118 varonce13 = var14;
2119 }
2120 {
2121 nitc___nitc__CodeWriter___add_decl(var10, var14); /* Direct call abstract_compiler$CodeWriter$add_decl on <var10:CodeWriter>*/
2122 }
2123 {
2124 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
2125 var23 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
2126 if (unlikely(var23 == NULL)) {
2127 if(catchStack.cursor >= 0){
2128 longjmp(catchStack.envs[catchStack.cursor], 1);
2129 }
2130 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2131 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
2132 fatal_exit(1);
2133 }
2134 var21 = var23;
2135 RET_LABEL22:(void)0;
2136 }
2137 }
2138 if (likely(varonce24!=NULL)) {
2139 var25 = varonce24;
2140 } else {
2141 var26 = "struct type_table { int size; int table[]; }; /* colorized type table. */";
2142 var28 = (val*)(73l<<2|1);
2143 var29 = (val*)(73l<<2|1);
2144 var30 = (val*)((long)(0)<<2|3);
2145 var31 = (val*)((long)(0)<<2|3);
2146 var27 = core__flat___CString___to_s_unsafe(var26, var28, var29, var30, var31);
2147 var25 = var27;
2148 varonce24 = var25;
2149 }
2150 {
2151 nitc___nitc__CodeWriter___add_decl(var21, var25); /* Direct call abstract_compiler$CodeWriter$add_decl on <var21:CodeWriter>*/
2152 }
2153 {
2154 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
2155 var34 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
2156 if (unlikely(var34 == NULL)) {
2157 if(catchStack.cursor >= 0){
2158 longjmp(catchStack.envs[catchStack.cursor], 1);
2159 }
2160 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2161 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
2162 fatal_exit(1);
2163 }
2164 var32 = var34;
2165 RET_LABEL33:(void)0;
2166 }
2167 }
2168 if (likely(varonce35!=NULL)) {
2169 var36 = varonce35;
2170 } else {
2171 var37 = "struct vts_entry { short int is_nullable; const struct class *class; }; /* link (nullable or not) between the vts and is bound. */";
2172 var39 = (val*)(130l<<2|1);
2173 var40 = (val*)(130l<<2|1);
2174 var41 = (val*)((long)(0)<<2|3);
2175 var42 = (val*)((long)(0)<<2|3);
2176 var38 = core__flat___CString___to_s_unsafe(var37, var39, var40, var41, var42);
2177 var36 = var38;
2178 varonce35 = var36;
2179 }
2180 {
2181 nitc___nitc__CodeWriter___add_decl(var32, var36); /* Direct call abstract_compiler$CodeWriter$add_decl on <var32:CodeWriter>*/
2182 }
2183 {
2184 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
2185 var45 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
2186 if (unlikely(var45 == NULL)) {
2187 if(catchStack.cursor >= 0){
2188 longjmp(catchStack.envs[catchStack.cursor], 1);
2189 }
2190 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2191 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
2192 fatal_exit(1);
2193 }
2194 var43 = var45;
2195 RET_LABEL44:(void)0;
2196 }
2197 }
2198 if (likely(varonce46!=NULL)) {
2199 var47 = varonce46;
2200 } else {
2201 var48 = "struct vts_table { int dummy; const struct vts_entry vts[]; }; /* vts list of a C type representation. */";
2202 var50 = (val*)(105l<<2|1);
2203 var51 = (val*)(105l<<2|1);
2204 var52 = (val*)((long)(0)<<2|3);
2205 var53 = (val*)((long)(0)<<2|3);
2206 var49 = core__flat___CString___to_s_unsafe(var48, var50, var51, var52, var53);
2207 var47 = var49;
2208 varonce46 = var47;
2209 }
2210 {
2211 nitc___nitc__CodeWriter___add_decl(var43, var47); /* Direct call abstract_compiler$CodeWriter$add_decl on <var43:CodeWriter>*/
2212 }
2213 {
2214 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
2215 var56 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
2216 if (unlikely(var56 == NULL)) {
2217 if(catchStack.cursor >= 0){
2218 longjmp(catchStack.envs[catchStack.cursor], 1);
2219 }
2220 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2221 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
2222 fatal_exit(1);
2223 }
2224 var54 = var56;
2225 RET_LABEL55:(void)0;
2226 }
2227 }
2228 if (likely(varonce57!=NULL)) {
2229 var58 = varonce57;
2230 } else {
2231 var59 = "typedef struct instance { const struct class *class; nitattribute_t attrs[1]; } val; /* general C type representing a Nit instance. */";
2232 var61 = (val*)(134l<<2|1);
2233 var62 = (val*)(134l<<2|1);
2234 var63 = (val*)((long)(0)<<2|3);
2235 var64 = (val*)((long)(0)<<2|3);
2236 var60 = core__flat___CString___to_s_unsafe(var59, var61, var62, var63, var64);
2237 var58 = var60;
2238 varonce57 = var58;
2239 }
2240 {
2241 nitc___nitc__CodeWriter___add_decl(var54, var58); /* Direct call abstract_compiler$CodeWriter$add_decl on <var54:CodeWriter>*/
2242 }
2243 RET_LABEL:;
2244 }
2245 /* method separate_erasure_compiler$SeparateErasureCompiler$compile_class_to_c for (self: SeparateErasureCompiler, MClass) */
2246 void nitc___nitc__SeparateErasureCompiler___nitc__separate_compiler__SeparateCompiler__compile_class_to_c(val* self, val* p0) {
2247 val* var_mclass /* var mclass: MClass */;
2248 val* var /* : MClassDef */;
2249 val* var2 /* : MClassDef */;
2250 val* var3 /* : MClassType */;
2251 val* var5 /* : MClassType */;
2252 val* var_mtype /* var mtype: MClassType */;
2253 val* var6 /* : String */;
2254 val* var_c_name /* var c_name: String */;
2255 val* var7 /* : Map[MClass, Array[nullable MClass]] */;
2256 val* var9 /* : Map[MClass, Array[nullable MClass]] */;
2257 val* var10 /* : nullable Object */;
2258 val* var_class_table /* var class_table: Array[nullable MClass] */;
2259 val* var11 /* : SeparateCompilerVisitor */;
2260 val* var_v /* var v: SeparateCompilerVisitor */;
2261 val* var12 /* : nullable RapidTypeAnalysis */;
2262 val* var14 /* : nullable RapidTypeAnalysis */;
2263 val* var_rta /* var rta: nullable RapidTypeAnalysis */;
2264 short int var_is_dead /* var is_dead: Bool */;
2265 short int var15 /* : Bool */;
2266 short int var16 /* : Bool */;
2267 short int var17 /* : Bool */;
2268 short int var18 /* : Bool */;
2269 short int var19 /* : Bool */;
2270 short int var_ /* var : Bool */;
2271 short int var20 /* : Bool */;
2272 short int var21 /* : Bool */;
2273 val* var_other /* var other: nullable Object */;
2274 short int var23 /* : Bool */;
2275 short int var24 /* : Bool */;
2276 short int var_25 /* var : Bool */;
2277 val* var26 /* : HashSet[MClass] */;
2278 val* var28 /* : HashSet[MClass] */;
2279 short int var29 /* : Bool */;
2280 short int var30 /* : Bool */;
2281 short int var_31 /* var : Bool */;
2282 short int var32 /* : Bool */;
2283 short int var33 /* : Bool */;
2284 short int var_34 /* var : Bool */;
2285 val* var35 /* : String */;
2286 val* var37 /* : String */;
2287 static val* varonce;
2288 val* var38 /* : String */;
2289 char* var39 /* : CString */;
2290 val* var40 /* : String */;
2291 val* var41 /* : nullable Int */;
2292 val* var42 /* : nullable Int */;
2293 val* var43 /* : nullable Bool */;
2294 val* var44 /* : nullable Bool */;
2295 short int var45 /* : Bool */;
2296 short int var47 /* : Bool */;
2297 short int var48 /* : Bool */;
2298 val* var50 /* : NativeArray[String] */;
2299 static val* varonce49;
2300 static val* varonce51;
2301 val* var52 /* : String */;
2302 char* var53 /* : CString */;
2303 val* var54 /* : String */;
2304 val* var55 /* : nullable Int */;
2305 val* var56 /* : nullable Int */;
2306 val* var57 /* : nullable Bool */;
2307 val* var58 /* : nullable Bool */;
2308 static val* varonce59;
2309 val* var60 /* : String */;
2310 char* var61 /* : CString */;
2311 val* var62 /* : String */;
2312 val* var63 /* : nullable Int */;
2313 val* var64 /* : nullable Int */;
2314 val* var65 /* : nullable Bool */;
2315 val* var66 /* : nullable Bool */;
2316 val* var67 /* : String */;
2317 val* var69 /* : NativeArray[String] */;
2318 static val* varonce68;
2319 static val* varonce70;
2320 val* var71 /* : String */;
2321 char* var72 /* : CString */;
2322 val* var73 /* : String */;
2323 val* var74 /* : nullable Int */;
2324 val* var75 /* : nullable Int */;
2325 val* var76 /* : nullable Bool */;
2326 val* var77 /* : nullable Bool */;
2327 val* var78 /* : String */;
2328 val* var80 /* : NativeArray[String] */;
2329 static val* varonce79;
2330 static val* varonce81;
2331 val* var82 /* : String */;
2332 char* var83 /* : CString */;
2333 val* var84 /* : String */;
2334 val* var85 /* : nullable Int */;
2335 val* var86 /* : nullable Int */;
2336 val* var87 /* : nullable Bool */;
2337 val* var88 /* : nullable Bool */;
2338 static val* varonce89;
2339 val* var90 /* : String */;
2340 char* var91 /* : CString */;
2341 val* var92 /* : String */;
2342 val* var93 /* : nullable Int */;
2343 val* var94 /* : nullable Int */;
2344 val* var95 /* : nullable Bool */;
2345 val* var96 /* : nullable Bool */;
2346 val* var97 /* : String */;
2347 val* var99 /* : NativeArray[String] */;
2348 static val* varonce98;
2349 static val* varonce100;
2350 val* var101 /* : String */;
2351 char* var102 /* : CString */;
2352 val* var103 /* : String */;
2353 val* var104 /* : nullable Int */;
2354 val* var105 /* : nullable Int */;
2355 val* var106 /* : nullable Bool */;
2356 val* var107 /* : nullable Bool */;
2357 static val* varonce108;
2358 val* var109 /* : String */;
2359 char* var110 /* : CString */;
2360 val* var111 /* : String */;
2361 val* var112 /* : nullable Int */;
2362 val* var113 /* : nullable Int */;
2363 val* var114 /* : nullable Bool */;
2364 val* var115 /* : nullable Bool */;
2365 val* var116 /* : String */;
2366 val* var118 /* : NativeArray[String] */;
2367 static val* varonce117;
2368 static val* varonce119;
2369 val* var120 /* : String */;
2370 char* var121 /* : CString */;
2371 val* var122 /* : String */;
2372 val* var123 /* : nullable Int */;
2373 val* var124 /* : nullable Int */;
2374 val* var125 /* : nullable Bool */;
2375 val* var126 /* : nullable Bool */;
2376 static val* varonce127;
2377 val* var128 /* : String */;
2378 char* var129 /* : CString */;
2379 val* var130 /* : String */;
2380 val* var131 /* : nullable Int */;
2381 val* var132 /* : nullable Int */;
2382 val* var133 /* : nullable Bool */;
2383 val* var134 /* : nullable Bool */;
2384 val* var135 /* : String */;
2385 val* var137 /* : NativeArray[String] */;
2386 static val* varonce136;
2387 static val* varonce138;
2388 val* var139 /* : String */;
2389 char* var140 /* : CString */;
2390 val* var141 /* : String */;
2391 val* var142 /* : nullable Int */;
2392 val* var143 /* : nullable Int */;
2393 val* var144 /* : nullable Bool */;
2394 val* var145 /* : nullable Bool */;
2395 val* var146 /* : Map[MClass, Int] */;
2396 val* var148 /* : Map[MClass, Int] */;
2397 val* var149 /* : nullable Object */;
2398 val* var150 /* : String */;
2399 long var151 /* : Int */;
2400 val* var152 /* : String */;
2401 val* var154 /* : NativeArray[String] */;
2402 static val* varonce153;
2403 static val* varonce155;
2404 val* var156 /* : String */;
2405 char* var157 /* : CString */;
2406 val* var158 /* : String */;
2407 val* var159 /* : nullable Int */;
2408 val* var160 /* : nullable Int */;
2409 val* var161 /* : nullable Bool */;
2410 val* var162 /* : nullable Bool */;
2411 static val* varonce163;
2412 val* var164 /* : String */;
2413 char* var165 /* : CString */;
2414 val* var166 /* : String */;
2415 val* var167 /* : nullable Int */;
2416 val* var168 /* : nullable Int */;
2417 val* var169 /* : nullable Bool */;
2418 val* var170 /* : nullable Bool */;
2419 val* var171 /* : String */;
2420 val* var173 /* : String */;
2421 val* var174 /* : String */;
2422 val* var176 /* : NativeArray[String] */;
2423 static val* varonce175;
2424 static val* varonce177;
2425 val* var178 /* : String */;
2426 char* var179 /* : CString */;
2427 val* var180 /* : String */;
2428 val* var181 /* : nullable Int */;
2429 val* var182 /* : nullable Int */;
2430 val* var183 /* : nullable Bool */;
2431 val* var184 /* : nullable Bool */;
2432 long var185 /* : Int */;
2433 val* var186 /* : String */;
2434 val* var187 /* : String */;
2435 val* var189 /* : NativeArray[String] */;
2436 static val* varonce188;
2437 static val* varonce190;
2438 val* var191 /* : String */;
2439 char* var192 /* : CString */;
2440 val* var193 /* : String */;
2441 val* var194 /* : nullable Int */;
2442 val* var195 /* : nullable Int */;
2443 val* var196 /* : nullable Bool */;
2444 val* var197 /* : nullable Bool */;
2445 val* var198 /* : Map[MClass, Int] */;
2446 val* var200 /* : Map[MClass, Int] */;
2447 val* var201 /* : nullable Object */;
2448 val* var202 /* : String */;
2449 long var203 /* : Int */;
2450 val* var204 /* : String */;
2451 short int var205 /* : Bool */;
2452 short int var206 /* : Bool */;
2453 val* var208 /* : NativeArray[String] */;
2454 static val* varonce207;
2455 static val* varonce209;
2456 val* var210 /* : String */;
2457 char* var211 /* : CString */;
2458 val* var212 /* : String */;
2459 val* var213 /* : nullable Int */;
2460 val* var214 /* : nullable Int */;
2461 val* var215 /* : nullable Bool */;
2462 val* var216 /* : nullable Bool */;
2463 val* var217 /* : String */;
2464 val* var219 /* : NativeArray[String] */;
2465 static val* varonce218;
2466 static val* varonce220;
2467 val* var221 /* : String */;
2468 char* var222 /* : CString */;
2469 val* var223 /* : String */;
2470 val* var224 /* : nullable Int */;
2471 val* var225 /* : nullable Int */;
2472 val* var226 /* : nullable Bool */;
2473 val* var227 /* : nullable Bool */;
2474 static val* varonce228;
2475 val* var229 /* : String */;
2476 char* var230 /* : CString */;
2477 val* var231 /* : String */;
2478 val* var232 /* : nullable Int */;
2479 val* var233 /* : nullable Int */;
2480 val* var234 /* : nullable Bool */;
2481 val* var235 /* : nullable Bool */;
2482 val* var236 /* : String */;
2483 static val* varonce237;
2484 val* var238 /* : String */;
2485 char* var239 /* : CString */;
2486 val* var240 /* : String */;
2487 val* var241 /* : nullable Int */;
2488 val* var242 /* : nullable Int */;
2489 val* var243 /* : nullable Bool */;
2490 val* var244 /* : nullable Bool */;
2491 val* var246 /* : NativeArray[String] */;
2492 static val* varonce245;
2493 static val* varonce247;
2494 val* var248 /* : String */;
2495 char* var249 /* : CString */;
2496 val* var250 /* : String */;
2497 val* var251 /* : nullable Int */;
2498 val* var252 /* : nullable Int */;
2499 val* var253 /* : nullable Bool */;
2500 val* var254 /* : nullable Bool */;
2501 static val* varonce255;
2502 val* var256 /* : String */;
2503 char* var257 /* : CString */;
2504 val* var258 /* : String */;
2505 val* var259 /* : nullable Int */;
2506 val* var260 /* : nullable Int */;
2507 val* var261 /* : nullable Bool */;
2508 val* var262 /* : nullable Bool */;
2509 val* var263 /* : String */;
2510 static val* varonce264;
2511 val* var265 /* : String */;
2512 char* var266 /* : CString */;
2513 val* var267 /* : String */;
2514 val* var268 /* : nullable Int */;
2515 val* var269 /* : nullable Int */;
2516 val* var270 /* : nullable Bool */;
2517 val* var271 /* : nullable Bool */;
2518 val* var272 /* : Map[MClass, Array[nullable MPropDef]] */;
2519 val* var274 /* : Map[MClass, Array[nullable MPropDef]] */;
2520 val* var275 /* : nullable Object */;
2521 val* var_vft /* var vft: nullable Array[nullable MPropDef] */;
2522 short int var276 /* : Bool */;
2523 short int var277 /* : Bool */;
2524 short int var279 /* : Bool */;
2525 short int var280 /* : Bool */;
2526 long var_i /* var i: Int */;
2527 long var281 /* : Int */;
2528 long var283 /* : Int */;
2529 long var_284 /* var : Int */;
2530 short int var285 /* : Bool */;
2531 short int var287 /* : Bool */;
2532 int cltype;
2533 int idtype;
2534 const char* var_class_name;
2535 short int var288 /* : Bool */;
2536 val* var289 /* : nullable Object */;
2537 val* var_mpropdef /* var mpropdef: nullable MPropDef */;
2538 short int var290 /* : Bool */;
2539 short int var291 /* : Bool */;
2540 val* var_other293 /* var other: nullable Object */;
2541 short int var294 /* : Bool */;
2542 short int var296 /* : Bool */;
2543 static val* varonce297;
2544 val* var298 /* : String */;
2545 char* var299 /* : CString */;
2546 val* var300 /* : String */;
2547 val* var301 /* : nullable Int */;
2548 val* var302 /* : nullable Int */;
2549 val* var303 /* : nullable Bool */;
2550 val* var304 /* : nullable Bool */;
2551 short int var305 /* : Bool */;
2552 int cltype306;
2553 int idtype307;
2554 short int var308 /* : Bool */;
2555 short int var309 /* : Bool */;
2556 short int var310 /* : Bool */;
2557 short int var312 /* : Bool */;
2558 short int var313 /* : Bool */;
2559 short int var_314 /* var : Bool */;
2560 val* var315 /* : HashSet[MMethodDef] */;
2561 val* var317 /* : HashSet[MMethodDef] */;
2562 short int var318 /* : Bool */;
2563 short int var319 /* : Bool */;
2564 val* var321 /* : NativeArray[String] */;
2565 static val* varonce320;
2566 static val* varonce322;
2567 val* var323 /* : String */;
2568 char* var324 /* : CString */;
2569 val* var325 /* : String */;
2570 val* var326 /* : nullable Int */;
2571 val* var327 /* : nullable Int */;
2572 val* var328 /* : nullable Bool */;
2573 val* var329 /* : nullable Bool */;
2574 static val* varonce330;
2575 val* var331 /* : String */;
2576 char* var332 /* : CString */;
2577 val* var333 /* : String */;
2578 val* var334 /* : nullable Int */;
2579 val* var335 /* : nullable Int */;
2580 val* var336 /* : nullable Bool */;
2581 val* var337 /* : nullable Bool */;
2582 static val* varonce338;
2583 val* var339 /* : String */;
2584 char* var340 /* : CString */;
2585 val* var341 /* : String */;
2586 val* var342 /* : nullable Int */;
2587 val* var343 /* : nullable Int */;
2588 val* var344 /* : nullable Bool */;
2589 val* var345 /* : nullable Bool */;
2590 static val* varonce346;
2591 val* var347 /* : String */;
2592 char* var348 /* : CString */;
2593 val* var349 /* : String */;
2594 val* var350 /* : nullable Int */;
2595 val* var351 /* : nullable Int */;
2596 val* var352 /* : nullable Bool */;
2597 val* var353 /* : nullable Bool */;
2598 val* var354 /* : MModule */;
2599 val* var356 /* : MModule */;
2600 val* var357 /* : String */;
2601 val* var358 /* : String */;
2602 val* var359 /* : String */;
2603 val* var360 /* : String */;
2604 val* var362 /* : SeparateRuntimeFunction */;
2605 val* var_rf /* var rf: SeparateRuntimeFunction */;
2606 val* var363 /* : String */;
2607 val* var365 /* : NativeArray[String] */;
2608 static val* varonce364;
2609 static val* varonce366;
2610 val* var367 /* : String */;
2611 char* var368 /* : CString */;
2612 val* var369 /* : String */;
2613 val* var370 /* : nullable Int */;
2614 val* var371 /* : nullable Int */;
2615 val* var372 /* : nullable Bool */;
2616 val* var373 /* : nullable Bool */;
2617 static val* varonce374;
2618 val* var375 /* : String */;
2619 char* var376 /* : CString */;
2620 val* var377 /* : String */;
2621 val* var378 /* : nullable Int */;
2622 val* var379 /* : nullable Int */;
2623 val* var380 /* : nullable Bool */;
2624 val* var381 /* : nullable Bool */;
2625 static val* varonce382;
2626 val* var383 /* : String */;
2627 char* var384 /* : CString */;
2628 val* var385 /* : String */;
2629 val* var386 /* : nullable Int */;
2630 val* var387 /* : nullable Int */;
2631 val* var388 /* : nullable Bool */;
2632 val* var389 /* : nullable Bool */;
2633 val* var390 /* : String */;
2634 val* var391 /* : String */;
2635 val* var392 /* : String */;
2636 long var393 /* : Int */;
2637 static val* varonce394;
2638 val* var395 /* : String */;
2639 char* var396 /* : CString */;
2640 val* var397 /* : String */;
2641 val* var398 /* : nullable Int */;
2642 val* var399 /* : nullable Int */;
2643 val* var400 /* : nullable Bool */;
2644 val* var401 /* : nullable Bool */;
2645 static val* varonce402;
2646 val* var403 /* : String */;
2647 char* var404 /* : CString */;
2648 val* var405 /* : String */;
2649 val* var406 /* : nullable Int */;
2650 val* var407 /* : nullable Int */;
2651 val* var408 /* : nullable Bool */;
2652 val* var409 /* : nullable Bool */;
2653 val* var411 /* : NativeArray[String] */;
2654 static val* varonce410;
2655 static val* varonce412;
2656 val* var413 /* : String */;
2657 char* var414 /* : CString */;
2658 val* var415 /* : String */;
2659 val* var416 /* : nullable Int */;
2660 val* var417 /* : nullable Int */;
2661 val* var418 /* : nullable Bool */;
2662 val* var419 /* : nullable Bool */;
2663 static val* varonce420;
2664 val* var421 /* : String */;
2665 char* var422 /* : CString */;
2666 val* var423 /* : String */;
2667 val* var424 /* : nullable Int */;
2668 val* var425 /* : nullable Int */;
2669 val* var426 /* : nullable Bool */;
2670 val* var427 /* : nullable Bool */;
2671 val* var428 /* : String */;
2672 val* var430 /* : NativeArray[String] */;
2673 static val* varonce429;
2674 static val* varonce431;
2675 val* var432 /* : String */;
2676 char* var433 /* : CString */;
2677 val* var434 /* : String */;
2678 val* var435 /* : nullable Int */;
2679 val* var436 /* : nullable Int */;
2680 val* var437 /* : nullable Bool */;
2681 val* var438 /* : nullable Bool */;
2682 long var439 /* : Int */;
2683 long var441 /* : Int */;
2684 val* var442 /* : String */;
2685 val* var443 /* : String */;
2686 static val* varonce444;
2687 val* var445 /* : String */;
2688 char* var446 /* : CString */;
2689 val* var447 /* : String */;
2690 val* var448 /* : nullable Int */;
2691 val* var449 /* : nullable Int */;
2692 val* var450 /* : nullable Bool */;
2693 val* var451 /* : nullable Bool */;
2694 val* var_452 /* var : Array[nullable MClass] */;
2695 val* var453 /* : IndexedIterator[nullable Object] */;
2696 val* var_454 /* var : IndexedIterator[nullable MClass] */;
2697 short int var455 /* : Bool */;
2698 val* var457 /* : nullable Object */;
2699 val* var_msuper /* var msuper: nullable MClass */;
2700 short int var458 /* : Bool */;
2701 short int var459 /* : Bool */;
2702 short int var461 /* : Bool */;
2703 short int var463 /* : Bool */;
2704 static val* varonce464;
2705 val* var465 /* : String */;
2706 char* var466 /* : CString */;
2707 val* var467 /* : String */;
2708 val* var468 /* : nullable Int */;
2709 val* var469 /* : nullable Int */;
2710 val* var470 /* : nullable Bool */;
2711 val* var471 /* : nullable Bool */;
2712 val* var473 /* : NativeArray[String] */;
2713 static val* varonce472;
2714 static val* varonce474;
2715 val* var475 /* : String */;
2716 char* var476 /* : CString */;
2717 val* var477 /* : String */;
2718 val* var478 /* : nullable Int */;
2719 val* var479 /* : nullable Int */;
2720 val* var480 /* : nullable Bool */;
2721 val* var481 /* : nullable Bool */;
2722 static val* varonce482;
2723 val* var483 /* : String */;
2724 char* var484 /* : CString */;
2725 val* var485 /* : String */;
2726 val* var486 /* : nullable Int */;
2727 val* var487 /* : nullable Int */;
2728 val* var488 /* : nullable Bool */;
2729 val* var489 /* : nullable Bool */;
2730 val* var490 /* : Map[MClass, Int] */;
2731 val* var492 /* : Map[MClass, Int] */;
2732 val* var493 /* : nullable Object */;
2733 val* var494 /* : String */;
2734 long var495 /* : Int */;
2735 val* var496 /* : String */;
2736 val* var497 /* : String */;
2737 static val* varonce498;
2738 val* var499 /* : String */;
2739 char* var500 /* : CString */;
2740 val* var501 /* : String */;
2741 val* var502 /* : nullable Int */;
2742 val* var503 /* : nullable Int */;
2743 val* var504 /* : nullable Bool */;
2744 val* var505 /* : nullable Bool */;
2745 static val* varonce506;
2746 val* var507 /* : String */;
2747 char* var508 /* : CString */;
2748 val* var509 /* : String */;
2749 val* var510 /* : nullable Int */;
2750 val* var511 /* : nullable Int */;
2751 val* var512 /* : nullable Bool */;
2752 val* var513 /* : nullable Bool */;
2753 short int var514 /* : Bool */;
2754 short int var515 /* : Bool */;
2755 short int var_516 /* var : Bool */;
2756 val* var517 /* : MClass */;
2757 val* var519 /* : MClass */;
2758 val* var520 /* : String */;
2759 val* var522 /* : String */;
2760 static val* varonce523;
2761 val* var524 /* : String */;
2762 char* var525 /* : CString */;
2763 val* var526 /* : String */;
2764 val* var527 /* : nullable Int */;
2765 val* var528 /* : nullable Int */;
2766 val* var529 /* : nullable Bool */;
2767 val* var530 /* : nullable Bool */;
2768 short int var531 /* : Bool */;
2769 val* var532 /* : CodeWriter */;
2770 val* var534 /* : CodeWriter */;
2771 val* var536 /* : NativeArray[String] */;
2772 static val* varonce535;
2773 static val* varonce537;
2774 val* var538 /* : String */;
2775 char* var539 /* : CString */;
2776 val* var540 /* : String */;
2777 val* var541 /* : nullable Int */;
2778 val* var542 /* : nullable Int */;
2779 val* var543 /* : nullable Bool */;
2780 val* var544 /* : nullable Bool */;
2781 static val* varonce545;
2782 val* var546 /* : String */;
2783 char* var547 /* : CString */;
2784 val* var548 /* : String */;
2785 val* var549 /* : nullable Int */;
2786 val* var550 /* : nullable Int */;
2787 val* var551 /* : nullable Bool */;
2788 val* var552 /* : nullable Bool */;
2789 val* var553 /* : String */;
2790 val* var554 /* : CodeWriter */;
2791 val* var556 /* : CodeWriter */;
2792 static val* varonce557;
2793 val* var558 /* : String */;
2794 char* var559 /* : CString */;
2795 val* var560 /* : String */;
2796 val* var561 /* : nullable Int */;
2797 val* var562 /* : nullable Int */;
2798 val* var563 /* : nullable Bool */;
2799 val* var564 /* : nullable Bool */;
2800 val* var565 /* : CodeWriter */;
2801 val* var567 /* : CodeWriter */;
2802 val* var569 /* : NativeArray[String] */;
2803 static val* varonce568;
2804 static val* varonce570;
2805 val* var571 /* : String */;
2806 char* var572 /* : CString */;
2807 val* var573 /* : String */;
2808 val* var574 /* : nullable Int */;
2809 val* var575 /* : nullable Int */;
2810 val* var576 /* : nullable Bool */;
2811 val* var577 /* : nullable Bool */;
2812 val* var578 /* : String */;
2813 val* var579 /* : String */;
2814 val* var580 /* : CodeWriter */;
2815 val* var582 /* : CodeWriter */;
2816 static val* varonce583;
2817 val* var584 /* : String */;
2818 char* var585 /* : CString */;
2819 val* var586 /* : String */;
2820 val* var587 /* : nullable Int */;
2821 val* var588 /* : nullable Int */;
2822 val* var589 /* : nullable Bool */;
2823 val* var590 /* : nullable Bool */;
2824 val* var592 /* : NativeArray[String] */;
2825 static val* varonce591;
2826 static val* varonce593;
2827 val* var594 /* : String */;
2828 char* var595 /* : CString */;
2829 val* var596 /* : String */;
2830 val* var597 /* : nullable Int */;
2831 val* var598 /* : nullable Int */;
2832 val* var599 /* : nullable Bool */;
2833 val* var600 /* : nullable Bool */;
2834 val* var601 /* : String */;
2835 val* var603 /* : NativeArray[String] */;
2836 static val* varonce602;
2837 static val* varonce604;
2838 val* var605 /* : String */;
2839 char* var606 /* : CString */;
2840 val* var607 /* : String */;
2841 val* var608 /* : nullable Int */;
2842 val* var609 /* : nullable Int */;
2843 val* var610 /* : nullable Bool */;
2844 val* var611 /* : nullable Bool */;
2845 static val* varonce612;
2846 val* var613 /* : String */;
2847 char* var614 /* : CString */;
2848 val* var615 /* : String */;
2849 val* var616 /* : nullable Int */;
2850 val* var617 /* : nullable Int */;
2851 val* var618 /* : nullable Bool */;
2852 val* var619 /* : nullable Bool */;
2853 static val* varonce620;
2854 val* var621 /* : String */;
2855 char* var622 /* : CString */;
2856 val* var623 /* : String */;
2857 val* var624 /* : nullable Int */;
2858 val* var625 /* : nullable Int */;
2859 val* var626 /* : nullable Bool */;
2860 val* var627 /* : nullable Bool */;
2861 val* var628 /* : String */;
2862 val* var629 /* : String */;
2863 val* var631 /* : NativeArray[String] */;
2864 static val* varonce630;
2865 static val* varonce632;
2866 val* var633 /* : String */;
2867 char* var634 /* : CString */;
2868 val* var635 /* : String */;
2869 val* var636 /* : nullable Int */;
2870 val* var637 /* : nullable Int */;
2871 val* var638 /* : nullable Bool */;
2872 val* var639 /* : nullable Bool */;
2873 static val* varonce640;
2874 val* var641 /* : String */;
2875 char* var642 /* : CString */;
2876 val* var643 /* : String */;
2877 val* var644 /* : nullable Int */;
2878 val* var645 /* : nullable Int */;
2879 val* var646 /* : nullable Bool */;
2880 val* var647 /* : nullable Bool */;
2881 val* var648 /* : String */;
2882 val* var649 /* : String */;
2883 val* var651 /* : NativeArray[String] */;
2884 static val* varonce650;
2885 static val* varonce652;
2886 val* var653 /* : String */;
2887 char* var654 /* : CString */;
2888 val* var655 /* : String */;
2889 val* var656 /* : nullable Int */;
2890 val* var657 /* : nullable Int */;
2891 val* var658 /* : nullable Bool */;
2892 val* var659 /* : nullable Bool */;
2893 static val* varonce660;
2894 val* var661 /* : String */;
2895 char* var662 /* : CString */;
2896 val* var663 /* : String */;
2897 val* var664 /* : nullable Int */;
2898 val* var665 /* : nullable Int */;
2899 val* var666 /* : nullable Bool */;
2900 val* var667 /* : nullable Bool */;
2901 static val* varonce668;
2902 val* var669 /* : String */;
2903 char* var670 /* : CString */;
2904 val* var671 /* : String */;
2905 val* var672 /* : nullable Int */;
2906 val* var673 /* : nullable Int */;
2907 val* var674 /* : nullable Bool */;
2908 val* var675 /* : nullable Bool */;
2909 val* var676 /* : String */;
2910 val* var677 /* : String */;
2911 val* var678 /* : String */;
2912 val* var680 /* : NativeArray[String] */;
2913 static val* varonce679;
2914 static val* varonce681;
2915 val* var682 /* : String */;
2916 char* var683 /* : CString */;
2917 val* var684 /* : String */;
2918 val* var685 /* : nullable Int */;
2919 val* var686 /* : nullable Int */;
2920 val* var687 /* : nullable Bool */;
2921 val* var688 /* : nullable Bool */;
2922 static val* varonce689;
2923 val* var690 /* : String */;
2924 char* var691 /* : CString */;
2925 val* var692 /* : String */;
2926 val* var693 /* : nullable Int */;
2927 val* var694 /* : nullable Int */;
2928 val* var695 /* : nullable Bool */;
2929 val* var696 /* : nullable Bool */;
2930 static val* varonce697;
2931 val* var698 /* : String */;
2932 char* var699 /* : CString */;
2933 val* var700 /* : String */;
2934 val* var701 /* : nullable Int */;
2935 val* var702 /* : nullable Int */;
2936 val* var703 /* : nullable Bool */;
2937 val* var704 /* : nullable Bool */;
2938 val* var705 /* : String */;
2939 val* var707 /* : NativeArray[String] */;
2940 static val* varonce706;
2941 static val* varonce708;
2942 val* var709 /* : String */;
2943 char* var710 /* : CString */;
2944 val* var711 /* : String */;
2945 val* var712 /* : nullable Int */;
2946 val* var713 /* : nullable Int */;
2947 val* var714 /* : nullable Bool */;
2948 val* var715 /* : nullable Bool */;
2949 val* var716 /* : String */;
2950 val* var718 /* : NativeArray[String] */;
2951 static val* varonce717;
2952 static val* varonce719;
2953 val* var720 /* : String */;
2954 char* var721 /* : CString */;
2955 val* var722 /* : String */;
2956 val* var723 /* : nullable Int */;
2957 val* var724 /* : nullable Int */;
2958 val* var725 /* : nullable Bool */;
2959 val* var726 /* : nullable Bool */;
2960 static val* varonce727;
2961 val* var728 /* : String */;
2962 char* var729 /* : CString */;
2963 val* var730 /* : String */;
2964 val* var731 /* : nullable Int */;
2965 val* var732 /* : nullable Int */;
2966 val* var733 /* : nullable Bool */;
2967 val* var734 /* : nullable Bool */;
2968 val* var735 /* : String */;
2969 static val* varonce736;
2970 val* var737 /* : String */;
2971 char* var738 /* : CString */;
2972 val* var739 /* : String */;
2973 val* var740 /* : nullable Int */;
2974 val* var741 /* : nullable Int */;
2975 val* var742 /* : nullable Bool */;
2976 val* var743 /* : nullable Bool */;
2977 static val* varonce744;
2978 val* var745 /* : String */;
2979 char* var746 /* : CString */;
2980 val* var747 /* : String */;
2981 val* var748 /* : nullable Int */;
2982 val* var749 /* : nullable Int */;
2983 val* var750 /* : nullable Bool */;
2984 val* var751 /* : nullable Bool */;
2985 static val* varonce752;
2986 val* var753 /* : String */;
2987 char* var754 /* : CString */;
2988 val* var755 /* : String */;
2989 val* var756 /* : nullable Int */;
2990 val* var757 /* : nullable Int */;
2991 val* var758 /* : nullable Bool */;
2992 val* var759 /* : nullable Bool */;
2993 val* var760 /* : MClass */;
2994 val* var762 /* : MClass */;
2995 val* var763 /* : String */;
2996 val* var765 /* : String */;
2997 static val* varonce766;
2998 val* var767 /* : String */;
2999 char* var768 /* : CString */;
3000 val* var769 /* : String */;
3001 val* var770 /* : nullable Int */;
3002 val* var771 /* : nullable Int */;
3003 val* var772 /* : nullable Bool */;
3004 val* var773 /* : nullable Bool */;
3005 short int var774 /* : Bool */;
3006 short int var776 /* : Bool */;
3007 short int var777 /* : Bool */;
3008 val* var778 /* : SeparateCompilerVisitor */;
3009 val* var780 /* : NativeArray[String] */;
3010 static val* varonce779;
3011 static val* varonce781;
3012 val* var782 /* : String */;
3013 char* var783 /* : CString */;
3014 val* var784 /* : String */;
3015 val* var785 /* : nullable Int */;
3016 val* var786 /* : nullable Int */;
3017 val* var787 /* : nullable Bool */;
3018 val* var788 /* : nullable Bool */;
3019 val* var789 /* : String */;
3020 val* var791 /* : NativeArray[String] */;
3021 static val* varonce790;
3022 static val* varonce792;
3023 val* var793 /* : String */;
3024 char* var794 /* : CString */;
3025 val* var795 /* : String */;
3026 val* var796 /* : nullable Int */;
3027 val* var797 /* : nullable Int */;
3028 val* var798 /* : nullable Bool */;
3029 val* var799 /* : nullable Bool */;
3030 static val* varonce800;
3031 val* var801 /* : String */;
3032 char* var802 /* : CString */;
3033 val* var803 /* : String */;
3034 val* var804 /* : nullable Int */;
3035 val* var805 /* : nullable Int */;
3036 val* var806 /* : nullable Bool */;
3037 val* var807 /* : nullable Bool */;
3038 val* var808 /* : String */;
3039 val* var809 /* : String */;
3040 val* var811 /* : NativeArray[String] */;
3041 static val* varonce810;
3042 static val* varonce812;
3043 val* var813 /* : String */;
3044 char* var814 /* : CString */;
3045 val* var815 /* : String */;
3046 val* var816 /* : nullable Int */;
3047 val* var817 /* : nullable Int */;
3048 val* var818 /* : nullable Bool */;
3049 val* var819 /* : nullable Bool */;
3050 static val* varonce820;
3051 val* var821 /* : String */;
3052 char* var822 /* : CString */;
3053 val* var823 /* : String */;
3054 val* var824 /* : nullable Int */;
3055 val* var825 /* : nullable Int */;
3056 val* var826 /* : nullable Bool */;
3057 val* var827 /* : nullable Bool */;
3058 val* var828 /* : String */;
3059 val* var829 /* : String */;
3060 val* var831 /* : NativeArray[String] */;
3061 static val* varonce830;
3062 static val* varonce832;
3063 val* var833 /* : String */;
3064 char* var834 /* : CString */;
3065 val* var835 /* : String */;
3066 val* var836 /* : nullable Int */;
3067 val* var837 /* : nullable Int */;
3068 val* var838 /* : nullable Bool */;
3069 val* var839 /* : nullable Bool */;
3070 static val* varonce840;
3071 val* var841 /* : String */;
3072 char* var842 /* : CString */;
3073 val* var843 /* : String */;
3074 val* var844 /* : nullable Int */;
3075 val* var845 /* : nullable Int */;
3076 val* var846 /* : nullable Bool */;
3077 val* var847 /* : nullable Bool */;
3078 val* var848 /* : String */;
3079 val* var849 /* : String */;
3080 val* var851 /* : NativeArray[String] */;
3081 static val* varonce850;
3082 static val* varonce852;
3083 val* var853 /* : String */;
3084 char* var854 /* : CString */;
3085 val* var855 /* : String */;
3086 val* var856 /* : nullable Int */;
3087 val* var857 /* : nullable Int */;
3088 val* var858 /* : nullable Bool */;
3089 val* var859 /* : nullable Bool */;
3090 val* var860 /* : String */;
3091 val* var861 /* : String */;
3092 static val* varonce862;
3093 val* var863 /* : String */;
3094 char* var864 /* : CString */;
3095 val* var865 /* : String */;
3096 val* var866 /* : nullable Int */;
3097 val* var867 /* : nullable Int */;
3098 val* var868 /* : nullable Bool */;
3099 val* var869 /* : nullable Bool */;
3100 val* var870 /* : RuntimeVariable */;
3101 val* var_res /* var res: RuntimeVariable */;
3102 val* var873 /* : NativeArray[String] */;
3103 static val* varonce872;
3104 static val* varonce874;
3105 val* var875 /* : String */;
3106 char* var876 /* : CString */;
3107 val* var877 /* : String */;
3108 val* var878 /* : nullable Int */;
3109 val* var879 /* : nullable Int */;
3110 val* var880 /* : nullable Bool */;
3111 val* var881 /* : nullable Bool */;
3112 static val* varonce882;
3113 val* var883 /* : String */;
3114 char* var884 /* : CString */;
3115 val* var885 /* : String */;
3116 val* var886 /* : nullable Int */;
3117 val* var887 /* : nullable Int */;
3118 val* var888 /* : nullable Bool */;
3119 val* var889 /* : nullable Bool */;
3120 val* var890 /* : String */;
3121 val* var891 /* : String */;
3122 val* var892 /* : String */;
3123 val* var894 /* : NativeArray[String] */;
3124 static val* varonce893;
3125 static val* varonce895;
3126 val* var896 /* : String */;
3127 char* var897 /* : CString */;
3128 val* var898 /* : String */;
3129 val* var899 /* : nullable Int */;
3130 val* var900 /* : nullable Int */;
3131 val* var901 /* : nullable Bool */;
3132 val* var902 /* : nullable Bool */;
3133 val* var903 /* : String */;
3134 val* var905 /* : NativeArray[String] */;
3135 static val* varonce904;
3136 static val* varonce906;
3137 val* var907 /* : String */;
3138 char* var908 /* : CString */;
3139 val* var909 /* : String */;
3140 val* var910 /* : nullable Int */;
3141 val* var911 /* : nullable Int */;
3142 val* var912 /* : nullable Bool */;
3143 val* var913 /* : nullable Bool */;
3144 static val* varonce914;
3145 val* var915 /* : String */;
3146 char* var916 /* : CString */;
3147 val* var917 /* : String */;
3148 val* var918 /* : nullable Int */;
3149 val* var919 /* : nullable Int */;
3150 val* var920 /* : nullable Bool */;
3151 val* var921 /* : nullable Bool */;
3152 val* var922 /* : String */;
3153 val* var923 /* : String */;
3154 val* var925 /* : NativeArray[String] */;
3155 static val* varonce924;
3156 static val* varonce926;
3157 val* var927 /* : String */;
3158 char* var928 /* : CString */;
3159 val* var929 /* : String */;
3160 val* var930 /* : nullable Int */;
3161 val* var931 /* : nullable Int */;
3162 val* var932 /* : nullable Bool */;
3163 val* var933 /* : nullable Bool */;
3164 static val* varonce934;
3165 val* var935 /* : String */;
3166 char* var936 /* : CString */;
3167 val* var937 /* : String */;
3168 val* var938 /* : nullable Int */;
3169 val* var939 /* : nullable Int */;
3170 val* var940 /* : nullable Bool */;
3171 val* var941 /* : nullable Bool */;
3172 static val* varonce942;
3173 val* var943 /* : String */;
3174 char* var944 /* : CString */;
3175 val* var945 /* : String */;
3176 val* var946 /* : nullable Int */;
3177 val* var947 /* : nullable Int */;
3178 val* var948 /* : nullable Bool */;
3179 val* var949 /* : nullable Bool */;
3180 val* var950 /* : String */;
3181 val* var951 /* : String */;
3182 val* var952 /* : String */;
3183 val* var954 /* : NativeArray[String] */;
3184 static val* varonce953;
3185 static val* varonce955;
3186 val* var956 /* : String */;
3187 char* var957 /* : CString */;
3188 val* var958 /* : String */;
3189 val* var959 /* : nullable Int */;
3190 val* var960 /* : nullable Int */;
3191 val* var961 /* : nullable Bool */;
3192 val* var962 /* : nullable Bool */;
3193 static val* varonce963;
3194 val* var964 /* : String */;
3195 char* var965 /* : CString */;
3196 val* var966 /* : String */;
3197 val* var967 /* : nullable Int */;
3198 val* var968 /* : nullable Int */;
3199 val* var969 /* : nullable Bool */;
3200 val* var970 /* : nullable Bool */;
3201 val* var971 /* : String */;
3202 val* var972 /* : String */;
3203 static val* varonce973;
3204 val* var974 /* : String */;
3205 char* var975 /* : CString */;
3206 val* var976 /* : String */;
3207 val* var977 /* : nullable Int */;
3208 val* var978 /* : nullable Int */;
3209 val* var979 /* : nullable Bool */;
3210 val* var980 /* : nullable Bool */;
3211 val* var981 /* : String */;
3212 val* var983 /* : String */;
3213 static val* varonce984;
3214 val* var985 /* : String */;
3215 char* var986 /* : CString */;
3216 val* var987 /* : String */;
3217 val* var988 /* : nullable Int */;
3218 val* var989 /* : nullable Int */;
3219 val* var990 /* : nullable Bool */;
3220 val* var991 /* : nullable Bool */;
3221 short int var992 /* : Bool */;
3222 val* var993 /* : CodeWriter */;
3223 val* var995 /* : CodeWriter */;
3224 val* var997 /* : NativeArray[String] */;
3225 static val* varonce996;
3226 static val* varonce998;
3227 val* var999 /* : String */;
3228 char* var1000 /* : CString */;
3229 val* var1001 /* : String */;
3230 val* var1002 /* : nullable Int */;
3231 val* var1003 /* : nullable Int */;
3232 val* var1004 /* : nullable Bool */;
3233 val* var1005 /* : nullable Bool */;
3234 static val* varonce1006;
3235 val* var1007 /* : String */;
3236 char* var1008 /* : CString */;
3237 val* var1009 /* : String */;
3238 val* var1010 /* : nullable Int */;
3239 val* var1011 /* : nullable Int */;
3240 val* var1012 /* : nullable Bool */;
3241 val* var1013 /* : nullable Bool */;
3242 val* var1014 /* : String */;
3243 val* var1015 /* : CodeWriter */;
3244 val* var1017 /* : CodeWriter */;
3245 static val* varonce1018;
3246 val* var1019 /* : String */;
3247 char* var1020 /* : CString */;
3248 val* var1021 /* : String */;
3249 val* var1022 /* : nullable Int */;
3250 val* var1023 /* : nullable Int */;
3251 val* var1024 /* : nullable Bool */;
3252 val* var1025 /* : nullable Bool */;
3253 val* var1026 /* : CodeWriter */;
3254 val* var1028 /* : CodeWriter */;
3255 static val* varonce1029;
3256 val* var1030 /* : String */;
3257 char* var1031 /* : CString */;
3258 val* var1032 /* : String */;
3259 val* var1033 /* : nullable Int */;
3260 val* var1034 /* : nullable Int */;
3261 val* var1035 /* : nullable Bool */;
3262 val* var1036 /* : nullable Bool */;
3263 val* var1037 /* : CodeWriter */;
3264 val* var1039 /* : CodeWriter */;
3265 static val* varonce1040;
3266 val* var1041 /* : String */;
3267 char* var1042 /* : CString */;
3268 val* var1043 /* : String */;
3269 val* var1044 /* : nullable Int */;
3270 val* var1045 /* : nullable Int */;
3271 val* var1046 /* : nullable Bool */;
3272 val* var1047 /* : nullable Bool */;
3273 val* var1048 /* : CodeWriter */;
3274 val* var1050 /* : CodeWriter */;
3275 static val* varonce1051;
3276 val* var1052 /* : String */;
3277 char* var1053 /* : CString */;
3278 val* var1054 /* : String */;
3279 val* var1055 /* : nullable Int */;
3280 val* var1056 /* : nullable Int */;
3281 val* var1057 /* : nullable Bool */;
3282 val* var1058 /* : nullable Bool */;
3283 val* var1060 /* : NativeArray[String] */;
3284 static val* varonce1059;
3285 static val* varonce1061;
3286 val* var1062 /* : String */;
3287 char* var1063 /* : CString */;
3288 val* var1064 /* : String */;
3289 val* var1065 /* : nullable Int */;
3290 val* var1066 /* : nullable Int */;
3291 val* var1067 /* : nullable Bool */;
3292 val* var1068 /* : nullable Bool */;
3293 val* var1069 /* : String */;
3294 val* var1071 /* : NativeArray[String] */;
3295 static val* varonce1070;
3296 static val* varonce1072;
3297 val* var1073 /* : String */;
3298 char* var1074 /* : CString */;
3299 val* var1075 /* : String */;
3300 val* var1076 /* : nullable Int */;
3301 val* var1077 /* : nullable Int */;
3302 val* var1078 /* : nullable Bool */;
3303 val* var1079 /* : nullable Bool */;
3304 static val* varonce1080;
3305 val* var1081 /* : String */;
3306 char* var1082 /* : CString */;
3307 val* var1083 /* : String */;
3308 val* var1084 /* : nullable Int */;
3309 val* var1085 /* : nullable Int */;
3310 val* var1086 /* : nullable Bool */;
3311 val* var1087 /* : nullable Bool */;
3312 val* var1088 /* : String */;
3313 val* var1089 /* : String */;
3314 val* var1091 /* : NativeArray[String] */;
3315 static val* varonce1090;
3316 static val* varonce1092;
3317 val* var1093 /* : String */;
3318 char* var1094 /* : CString */;
3319 val* var1095 /* : String */;
3320 val* var1096 /* : nullable Int */;
3321 val* var1097 /* : nullable Int */;
3322 val* var1098 /* : nullable Bool */;
3323 val* var1099 /* : nullable Bool */;
3324 static val* varonce1100;
3325 val* var1101 /* : String */;
3326 char* var1102 /* : CString */;
3327 val* var1103 /* : String */;
3328 val* var1104 /* : nullable Int */;
3329 val* var1105 /* : nullable Int */;
3330 val* var1106 /* : nullable Bool */;
3331 val* var1107 /* : nullable Bool */;
3332 val* var1108 /* : String */;
3333 val* var1109 /* : String */;
3334 val* var1111 /* : NativeArray[String] */;
3335 static val* varonce1110;
3336 static val* varonce1112;
3337 val* var1113 /* : String */;
3338 char* var1114 /* : CString */;
3339 val* var1115 /* : String */;
3340 val* var1116 /* : nullable Int */;
3341 val* var1117 /* : nullable Int */;
3342 val* var1118 /* : nullable Bool */;
3343 val* var1119 /* : nullable Bool */;
3344 static val* varonce1120;
3345 val* var1121 /* : String */;
3346 char* var1122 /* : CString */;
3347 val* var1123 /* : String */;
3348 val* var1124 /* : nullable Int */;
3349 val* var1125 /* : nullable Int */;
3350 val* var1126 /* : nullable Bool */;
3351 val* var1127 /* : nullable Bool */;
3352 val* var1128 /* : String */;
3353 val* var1129 /* : String */;
3354 static val* varonce1130;
3355 val* var1131 /* : String */;
3356 char* var1132 /* : CString */;
3357 val* var1133 /* : String */;
3358 val* var1134 /* : nullable Int */;
3359 val* var1135 /* : nullable Int */;
3360 val* var1136 /* : nullable Bool */;
3361 val* var1137 /* : nullable Bool */;
3362 val* var1138 /* : String */;
3363 val* var_res1139 /* var res: String */;
3364 val* var1141 /* : NativeArray[String] */;
3365 static val* varonce1140;
3366 static val* varonce1142;
3367 val* var1143 /* : String */;
3368 char* var1144 /* : CString */;
3369 val* var1145 /* : String */;
3370 val* var1146 /* : nullable Int */;
3371 val* var1147 /* : nullable Int */;
3372 val* var1148 /* : nullable Bool */;
3373 val* var1149 /* : nullable Bool */;
3374 static val* varonce1150;
3375 val* var1151 /* : String */;
3376 char* var1152 /* : CString */;
3377 val* var1153 /* : String */;
3378 val* var1154 /* : nullable Int */;
3379 val* var1155 /* : nullable Int */;
3380 val* var1156 /* : nullable Bool */;
3381 val* var1157 /* : nullable Bool */;
3382 static val* varonce1158;
3383 val* var1159 /* : String */;
3384 char* var1160 /* : CString */;
3385 val* var1161 /* : String */;
3386 val* var1162 /* : nullable Int */;
3387 val* var1163 /* : nullable Int */;
3388 val* var1164 /* : nullable Bool */;
3389 val* var1165 /* : nullable Bool */;
3390 val* var1166 /* : String */;
3391 val* var1167 /* : Array[MType] */;
3392 val* var1168 /* : nullable Object */;
3393 val* var_mtype_elt /* var mtype_elt: MType */;
3394 val* var1170 /* : NativeArray[String] */;
3395 static val* varonce1169;
3396 static val* varonce1171;
3397 val* var1172 /* : String */;
3398 char* var1173 /* : CString */;
3399 val* var1174 /* : String */;
3400 val* var1175 /* : nullable Int */;
3401 val* var1176 /* : nullable Int */;
3402 val* var1177 /* : nullable Bool */;
3403 val* var1178 /* : nullable Bool */;
3404 static val* varonce1179;
3405 val* var1180 /* : String */;
3406 char* var1181 /* : CString */;
3407 val* var1182 /* : String */;
3408 val* var1183 /* : nullable Int */;
3409 val* var1184 /* : nullable Int */;
3410 val* var1185 /* : nullable Bool */;
3411 val* var1186 /* : nullable Bool */;
3412 static val* varonce1187;
3413 val* var1188 /* : String */;
3414 char* var1189 /* : CString */;
3415 val* var1190 /* : String */;
3416 val* var1191 /* : nullable Int */;
3417 val* var1192 /* : nullable Int */;
3418 val* var1193 /* : nullable Bool */;
3419 val* var1194 /* : nullable Bool */;
3420 val* var1195 /* : String */;
3421 val* var1196 /* : String */;
3422 val* var1198 /* : NativeArray[String] */;
3423 static val* varonce1197;
3424 static val* varonce1199;
3425 val* var1200 /* : String */;
3426 char* var1201 /* : CString */;
3427 val* var1202 /* : String */;
3428 val* var1203 /* : nullable Int */;
3429 val* var1204 /* : nullable Int */;
3430 val* var1205 /* : nullable Bool */;
3431 val* var1206 /* : nullable Bool */;
3432 val* var1207 /* : String */;
3433 val* var1209 /* : NativeArray[String] */;
3434 static val* varonce1208;
3435 static val* varonce1210;
3436 val* var1211 /* : String */;
3437 char* var1212 /* : CString */;
3438 val* var1213 /* : String */;
3439 val* var1214 /* : nullable Int */;
3440 val* var1215 /* : nullable Int */;
3441 val* var1216 /* : nullable Bool */;
3442 val* var1217 /* : nullable Bool */;
3443 static val* varonce1218;
3444 val* var1219 /* : String */;
3445 char* var1220 /* : CString */;
3446 val* var1221 /* : String */;
3447 val* var1222 /* : nullable Int */;
3448 val* var1223 /* : nullable Int */;
3449 val* var1224 /* : nullable Bool */;
3450 val* var1225 /* : nullable Bool */;
3451 val* var1226 /* : String */;
3452 val* var1228 /* : NativeArray[String] */;
3453 static val* varonce1227;
3454 static val* varonce1229;
3455 val* var1230 /* : String */;
3456 char* var1231 /* : CString */;
3457 val* var1232 /* : String */;
3458 val* var1233 /* : nullable Int */;
3459 val* var1234 /* : nullable Int */;
3460 val* var1235 /* : nullable Bool */;
3461 val* var1236 /* : nullable Bool */;
3462 val* var1237 /* : String */;
3463 val* var1239 /* : NativeArray[String] */;
3464 static val* varonce1238;
3465 static val* varonce1240;
3466 val* var1241 /* : String */;
3467 char* var1242 /* : CString */;
3468 val* var1243 /* : String */;
3469 val* var1244 /* : nullable Int */;
3470 val* var1245 /* : nullable Int */;
3471 val* var1246 /* : nullable Bool */;
3472 val* var1247 /* : nullable Bool */;
3473 static val* varonce1248;
3474 val* var1249 /* : String */;
3475 char* var1250 /* : CString */;
3476 val* var1251 /* : String */;
3477 val* var1252 /* : nullable Int */;
3478 val* var1253 /* : nullable Int */;
3479 val* var1254 /* : nullable Bool */;
3480 val* var1255 /* : nullable Bool */;
3481 val* var1256 /* : String */;
3482 static val* varonce1257;
3483 val* var1258 /* : String */;
3484 char* var1259 /* : CString */;
3485 val* var1260 /* : String */;
3486 val* var1261 /* : nullable Int */;
3487 val* var1262 /* : nullable Int */;
3488 val* var1263 /* : nullable Bool */;
3489 val* var1264 /* : nullable Bool */;
3490 short int var1265 /* : Bool */;
3491 val* var1266 /* : MClass */;
3492 val* var1268 /* : MClass */;
3493 val* var1269 /* : MClassKind */;
3494 val* var1271 /* : MClassKind */;
3495 val* var1272 /* : Sys */;
3496 val* var1273 /* : MClassKind */;
3497 short int var1274 /* : Bool */;
3498 short int var1276 /* : Bool */;
3499 short int var1278 /* : Bool */;
3500 short int var_1279 /* var : Bool */;
3501 val* var1280 /* : MClass */;
3502 val* var1282 /* : MClass */;
3503 val* var1283 /* : String */;
3504 val* var1285 /* : String */;
3505 static val* varonce1286;
3506 val* var1287 /* : String */;
3507 char* var1288 /* : CString */;
3508 val* var1289 /* : String */;
3509 val* var1290 /* : nullable Int */;
3510 val* var1291 /* : nullable Int */;
3511 val* var1292 /* : nullable Bool */;
3512 val* var1293 /* : nullable Bool */;
3513 short int var1294 /* : Bool */;
3514 short int var1296 /* : Bool */;
3515 short int var1297 /* : Bool */;
3516 val* var1298 /* : MModule */;
3517 val* var1300 /* : MModule */;
3518 val* var1301 /* : MClassType */;
3519 val* var_pointer_type /* var pointer_type: MClassType */;
3520 val* var1303 /* : NativeArray[String] */;
3521 static val* varonce1302;
3522 static val* varonce1304;
3523 val* var1305 /* : String */;
3524 char* var1306 /* : CString */;
3525 val* var1307 /* : String */;
3526 val* var1308 /* : nullable Int */;
3527 val* var1309 /* : nullable Int */;
3528 val* var1310 /* : nullable Bool */;
3529 val* var1311 /* : nullable Bool */;
3530 val* var1312 /* : String */;
3531 val* var1314 /* : NativeArray[String] */;
3532 static val* varonce1313;
3533 static val* varonce1315;
3534 val* var1316 /* : String */;
3535 char* var1317 /* : CString */;
3536 val* var1318 /* : String */;
3537 val* var1319 /* : nullable Int */;
3538 val* var1320 /* : nullable Int */;
3539 val* var1321 /* : nullable Bool */;
3540 val* var1322 /* : nullable Bool */;
3541 static val* varonce1323;
3542 val* var1324 /* : String */;
3543 char* var1325 /* : CString */;
3544 val* var1326 /* : String */;
3545 val* var1327 /* : nullable Int */;
3546 val* var1328 /* : nullable Int */;
3547 val* var1329 /* : nullable Bool */;
3548 val* var1330 /* : nullable Bool */;
3549 val* var1331 /* : String */;
3550 val* var1332 /* : String */;
3551 val* var1334 /* : NativeArray[String] */;
3552 static val* varonce1333;
3553 static val* varonce1335;
3554 val* var1336 /* : String */;
3555 char* var1337 /* : CString */;
3556 val* var1338 /* : String */;
3557 val* var1339 /* : nullable Int */;
3558 val* var1340 /* : nullable Int */;
3559 val* var1341 /* : nullable Bool */;
3560 val* var1342 /* : nullable Bool */;
3561 static val* varonce1343;
3562 val* var1344 /* : String */;
3563 char* var1345 /* : CString */;
3564 val* var1346 /* : String */;
3565 val* var1347 /* : nullable Int */;
3566 val* var1348 /* : nullable Int */;
3567 val* var1349 /* : nullable Bool */;
3568 val* var1350 /* : nullable Bool */;
3569 val* var1351 /* : String */;
3570 val* var1352 /* : String */;
3571 val* var1354 /* : NativeArray[String] */;
3572 static val* varonce1353;
3573 static val* varonce1355;
3574 val* var1356 /* : String */;
3575 char* var1357 /* : CString */;
3576 val* var1358 /* : String */;
3577 val* var1359 /* : nullable Int */;
3578 val* var1360 /* : nullable Int */;
3579 val* var1361 /* : nullable Bool */;
3580 val* var1362 /* : nullable Bool */;
3581 static val* varonce1363;
3582 val* var1364 /* : String */;
3583 char* var1365 /* : CString */;
3584 val* var1366 /* : String */;
3585 val* var1367 /* : nullable Int */;
3586 val* var1368 /* : nullable Int */;
3587 val* var1369 /* : nullable Bool */;
3588 val* var1370 /* : nullable Bool */;
3589 val* var1371 /* : String */;
3590 val* var1372 /* : String */;
3591 val* var1374 /* : NativeArray[String] */;
3592 static val* varonce1373;
3593 static val* varonce1375;
3594 val* var1376 /* : String */;
3595 char* var1377 /* : CString */;
3596 val* var1378 /* : String */;
3597 val* var1379 /* : nullable Int */;
3598 val* var1380 /* : nullable Int */;
3599 val* var1381 /* : nullable Bool */;
3600 val* var1382 /* : nullable Bool */;
3601 val* var1383 /* : String */;
3602 val* var1384 /* : String */;
3603 static val* varonce1385;
3604 val* var1386 /* : String */;
3605 char* var1387 /* : CString */;
3606 val* var1388 /* : String */;
3607 val* var1389 /* : nullable Int */;
3608 val* var1390 /* : nullable Int */;
3609 val* var1391 /* : nullable Bool */;
3610 val* var1392 /* : nullable Bool */;
3611 val* var1393 /* : RuntimeVariable */;
3612 val* var_res1394 /* var res: RuntimeVariable */;
3613 val* var1397 /* : NativeArray[String] */;
3614 static val* varonce1396;
3615 static val* varonce1398;
3616 val* var1399 /* : String */;
3617 char* var1400 /* : CString */;
3618 val* var1401 /* : String */;
3619 val* var1402 /* : nullable Int */;
3620 val* var1403 /* : nullable Int */;
3621 val* var1404 /* : nullable Bool */;
3622 val* var1405 /* : nullable Bool */;
3623 static val* varonce1406;
3624 val* var1407 /* : String */;
3625 char* var1408 /* : CString */;
3626 val* var1409 /* : String */;
3627 val* var1410 /* : nullable Int */;
3628 val* var1411 /* : nullable Int */;
3629 val* var1412 /* : nullable Bool */;
3630 val* var1413 /* : nullable Bool */;
3631 val* var1414 /* : String */;
3632 val* var1415 /* : String */;
3633 val* var1416 /* : String */;
3634 val* var1418 /* : NativeArray[String] */;
3635 static val* varonce1417;
3636 static val* varonce1419;
3637 val* var1420 /* : String */;
3638 char* var1421 /* : CString */;
3639 val* var1422 /* : String */;
3640 val* var1423 /* : nullable Int */;
3641 val* var1424 /* : nullable Int */;
3642 val* var1425 /* : nullable Bool */;
3643 val* var1426 /* : nullable Bool */;
3644 val* var1427 /* : String */;
3645 val* var1429 /* : NativeArray[String] */;
3646 static val* varonce1428;
3647 static val* varonce1430;
3648 val* var1431 /* : String */;
3649 char* var1432 /* : CString */;
3650 val* var1433 /* : String */;
3651 val* var1434 /* : nullable Int */;
3652 val* var1435 /* : nullable Int */;
3653 val* var1436 /* : nullable Bool */;
3654 val* var1437 /* : nullable Bool */;
3655 static val* varonce1438;
3656 val* var1439 /* : String */;
3657 char* var1440 /* : CString */;
3658 val* var1441 /* : String */;
3659 val* var1442 /* : nullable Int */;
3660 val* var1443 /* : nullable Int */;
3661 val* var1444 /* : nullable Bool */;
3662 val* var1445 /* : nullable Bool */;
3663 val* var1446 /* : String */;
3664 val* var1447 /* : String */;
3665 val* var1449 /* : NativeArray[String] */;
3666 static val* varonce1448;
3667 static val* varonce1450;
3668 val* var1451 /* : String */;
3669 char* var1452 /* : CString */;
3670 val* var1453 /* : String */;
3671 val* var1454 /* : nullable Int */;
3672 val* var1455 /* : nullable Int */;
3673 val* var1456 /* : nullable Bool */;
3674 val* var1457 /* : nullable Bool */;
3675 static val* varonce1458;
3676 val* var1459 /* : String */;
3677 char* var1460 /* : CString */;
3678 val* var1461 /* : String */;
3679 val* var1462 /* : nullable Int */;
3680 val* var1463 /* : nullable Int */;
3681 val* var1464 /* : nullable Bool */;
3682 val* var1465 /* : nullable Bool */;
3683 static val* varonce1466;
3684 val* var1467 /* : String */;
3685 char* var1468 /* : CString */;
3686 val* var1469 /* : String */;
3687 val* var1470 /* : nullable Int */;
3688 val* var1471 /* : nullable Int */;
3689 val* var1472 /* : nullable Bool */;
3690 val* var1473 /* : nullable Bool */;
3691 val* var1474 /* : String */;
3692 val* var1475 /* : String */;
3693 val* var1476 /* : String */;
3694 val* var1478 /* : NativeArray[String] */;
3695 static val* varonce1477;
3696 static val* varonce1479;
3697 val* var1480 /* : String */;
3698 char* var1481 /* : CString */;
3699 val* var1482 /* : String */;
3700 val* var1483 /* : nullable Int */;
3701 val* var1484 /* : nullable Int */;
3702 val* var1485 /* : nullable Bool */;
3703 val* var1486 /* : nullable Bool */;
3704 static val* varonce1487;
3705 val* var1488 /* : String */;
3706 char* var1489 /* : CString */;
3707 val* var1490 /* : String */;
3708 val* var1491 /* : nullable Int */;
3709 val* var1492 /* : nullable Int */;
3710 val* var1493 /* : nullable Bool */;
3711 val* var1494 /* : nullable Bool */;
3712 val* var1495 /* : String */;
3713 val* var1496 /* : String */;
3714 static val* varonce1497;
3715 val* var1498 /* : String */;
3716 char* var1499 /* : CString */;
3717 val* var1500 /* : String */;
3718 val* var1501 /* : nullable Int */;
3719 val* var1502 /* : nullable Int */;
3720 val* var1503 /* : nullable Bool */;
3721 val* var1504 /* : nullable Bool */;
3722 val* var1506 /* : NativeArray[String] */;
3723 static val* varonce1505;
3724 static val* varonce1507;
3725 val* var1508 /* : String */;
3726 char* var1509 /* : CString */;
3727 val* var1510 /* : String */;
3728 val* var1511 /* : nullable Int */;
3729 val* var1512 /* : nullable Int */;
3730 val* var1513 /* : nullable Bool */;
3731 val* var1514 /* : nullable Bool */;
3732 val* var1515 /* : String */;
3733 val* var1517 /* : NativeArray[String] */;
3734 static val* varonce1516;
3735 static val* varonce1518;
3736 val* var1519 /* : String */;
3737 char* var1520 /* : CString */;
3738 val* var1521 /* : String */;
3739 val* var1522 /* : nullable Int */;
3740 val* var1523 /* : nullable Int */;
3741 val* var1524 /* : nullable Bool */;
3742 val* var1525 /* : nullable Bool */;
3743 static val* varonce1526;
3744 val* var1527 /* : String */;
3745 char* var1528 /* : CString */;
3746 val* var1529 /* : String */;
3747 val* var1530 /* : nullable Int */;
3748 val* var1531 /* : nullable Int */;
3749 val* var1532 /* : nullable Bool */;
3750 val* var1533 /* : nullable Bool */;
3751 val* var1534 /* : String */;
3752 val* var1535 /* : String */;
3753 val* var1537 /* : NativeArray[String] */;
3754 static val* varonce1536;
3755 static val* varonce1538;
3756 val* var1539 /* : String */;
3757 char* var1540 /* : CString */;
3758 val* var1541 /* : String */;
3759 val* var1542 /* : nullable Int */;
3760 val* var1543 /* : nullable Int */;
3761 val* var1544 /* : nullable Bool */;
3762 val* var1545 /* : nullable Bool */;
3763 static val* varonce1546;
3764 val* var1547 /* : String */;
3765 char* var1548 /* : CString */;
3766 val* var1549 /* : String */;
3767 val* var1550 /* : nullable Int */;
3768 val* var1551 /* : nullable Int */;
3769 val* var1552 /* : nullable Bool */;
3770 val* var1553 /* : nullable Bool */;
3771 val* var1554 /* : String */;
3772 val* var1555 /* : String */;
3773 val* var1557 /* : NativeArray[String] */;
3774 static val* varonce1556;
3775 static val* varonce1558;
3776 val* var1559 /* : String */;
3777 char* var1560 /* : CString */;
3778 val* var1561 /* : String */;
3779 val* var1562 /* : nullable Int */;
3780 val* var1563 /* : nullable Int */;
3781 val* var1564 /* : nullable Bool */;
3782 val* var1565 /* : nullable Bool */;
3783 static val* varonce1566;
3784 val* var1567 /* : String */;
3785 char* var1568 /* : CString */;
3786 val* var1569 /* : String */;
3787 val* var1570 /* : nullable Int */;
3788 val* var1571 /* : nullable Int */;
3789 val* var1572 /* : nullable Bool */;
3790 val* var1573 /* : nullable Bool */;
3791 val* var1574 /* : String */;
3792 val* var1575 /* : String */;
3793 val* var1577 /* : NativeArray[String] */;
3794 static val* varonce1576;
3795 static val* varonce1578;
3796 val* var1579 /* : String */;
3797 char* var1580 /* : CString */;
3798 val* var1581 /* : String */;
3799 val* var1582 /* : nullable Int */;
3800 val* var1583 /* : nullable Int */;
3801 val* var1584 /* : nullable Bool */;
3802 val* var1585 /* : nullable Bool */;
3803 val* var1586 /* : String */;
3804 val* var1587 /* : String */;
3805 static val* varonce1588;
3806 val* var1589 /* : String */;
3807 char* var1590 /* : CString */;
3808 val* var1591 /* : String */;
3809 val* var1592 /* : nullable Int */;
3810 val* var1593 /* : nullable Int */;
3811 val* var1594 /* : nullable Bool */;
3812 val* var1595 /* : nullable Bool */;
3813 val* var1596 /* : RuntimeVariable */;
3814 val* var_res1597 /* var res: RuntimeVariable */;
3815 val* var1599 /* : Map[MClass, Array[nullable MProperty]] */;
3816 val* var1601 /* : Map[MClass, Array[nullable MProperty]] */;
3817 val* var1602 /* : nullable Object */;
3818 val* var_attrs /* var attrs: nullable Array[nullable MProperty] */;
3819 short int var1603 /* : Bool */;
3820 short int var1604 /* : Bool */;
3821 val* var1606 /* : NativeArray[String] */;
3822 static val* varonce1605;
3823 static val* varonce1607;
3824 val* var1608 /* : String */;
3825 char* var1609 /* : CString */;
3826 val* var1610 /* : String */;
3827 val* var1611 /* : nullable Int */;
3828 val* var1612 /* : nullable Int */;
3829 val* var1613 /* : nullable Bool */;
3830 val* var1614 /* : nullable Bool */;
3831 val* var1615 /* : String */;
3832 val* var1616 /* : String */;
3833 val* var1618 /* : NativeArray[String] */;
3834 static val* varonce1617;
3835 static val* varonce1619;
3836 val* var1620 /* : String */;
3837 char* var1621 /* : CString */;
3838 val* var1622 /* : String */;
3839 val* var1623 /* : nullable Int */;
3840 val* var1624 /* : nullable Int */;
3841 val* var1625 /* : nullable Bool */;
3842 val* var1626 /* : nullable Bool */;
3843 static val* varonce1627;
3844 val* var1628 /* : String */;
3845 char* var1629 /* : CString */;
3846 val* var1630 /* : String */;
3847 val* var1631 /* : nullable Int */;
3848 val* var1632 /* : nullable Int */;
3849 val* var1633 /* : nullable Bool */;
3850 val* var1634 /* : nullable Bool */;
3851 val* var1635 /* : String */;
3852 long var1636 /* : Int */;
3853 long var1638 /* : Int */;
3854 val* var1639 /* : String */;
3855 val* var1640 /* : String */;
3856 val* var1642 /* : NativeArray[String] */;
3857 static val* varonce1641;
3858 static val* varonce1643;
3859 val* var1644 /* : String */;
3860 char* var1645 /* : CString */;
3861 val* var1646 /* : String */;
3862 val* var1647 /* : nullable Int */;
3863 val* var1648 /* : nullable Int */;
3864 val* var1649 /* : nullable Bool */;
3865 val* var1650 /* : nullable Bool */;
3866 val* var1651 /* : String */;
3867 val* var1653 /* : NativeArray[String] */;
3868 static val* varonce1652;
3869 static val* varonce1654;
3870 val* var1655 /* : String */;
3871 char* var1656 /* : CString */;
3872 val* var1657 /* : String */;
3873 val* var1658 /* : nullable Int */;
3874 val* var1659 /* : nullable Int */;
3875 val* var1660 /* : nullable Bool */;
3876 val* var1661 /* : nullable Bool */;
3877 static val* varonce1662;
3878 val* var1663 /* : String */;
3879 char* var1664 /* : CString */;
3880 val* var1665 /* : String */;
3881 val* var1666 /* : nullable Int */;
3882 val* var1667 /* : nullable Int */;
3883 val* var1668 /* : nullable Bool */;
3884 val* var1669 /* : nullable Bool */;
3885 val* var1670 /* : String */;
3886 val* var1671 /* : String */;
3887 short int var1672 /* : Bool */;
3888 short int var1673 /* : Bool */;
3889 short int var1675 /* : Bool */;
3890 short int var1676 /* : Bool */;
3891 val* var1678 /* : NativeArray[String] */;
3892 static val* varonce1677;
3893 static val* varonce1679;
3894 val* var1680 /* : String */;
3895 char* var1681 /* : CString */;
3896 val* var1682 /* : String */;
3897 val* var1683 /* : nullable Int */;
3898 val* var1684 /* : nullable Int */;
3899 val* var1685 /* : nullable Bool */;
3900 val* var1686 /* : nullable Bool */;
3901 static val* varonce1687;
3902 val* var1688 /* : String */;
3903 char* var1689 /* : CString */;
3904 val* var1690 /* : String */;
3905 val* var1691 /* : nullable Int */;
3906 val* var1692 /* : nullable Int */;
3907 val* var1693 /* : nullable Bool */;
3908 val* var1694 /* : nullable Bool */;
3909 val* var1695 /* : String */;
3910 val* var1696 /* : String */;
3911 static val* varonce1697;
3912 val* var1698 /* : String */;
3913 char* var1699 /* : CString */;
3914 val* var1700 /* : String */;
3915 val* var1701 /* : nullable Int */;
3916 val* var1702 /* : nullable Int */;
3917 val* var1703 /* : nullable Bool */;
3918 val* var1704 /* : nullable Bool */;
3919 var_mclass = p0;
3920 {
3921 { /* Inline model$MClass$intro (var_mclass) on <var_mclass:MClass> */
3922 var2 = var_mclass->attrs[COLOR_nitc__model__MClass___intro].val; /* _intro on <var_mclass:MClass> */
3923 if (unlikely(var2 == NULL)) {
3924 if(catchStack.cursor >= 0){
3925 longjmp(catchStack.envs[catchStack.cursor], 1);
3926 }
3927 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3928 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 496);
3929 fatal_exit(1);
3930 }
3931 var = var2;
3932 RET_LABEL1:(void)0;
3933 }
3934 }
3935 {
3936 { /* Inline model$MClassDef$bound_mtype (var) on <var:MClassDef> */
3937 var5 = var->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var:MClassDef> */
3938 if (unlikely(var5 == NULL)) {
3939 if(catchStack.cursor >= 0){
3940 longjmp(catchStack.envs[catchStack.cursor], 1);
3941 }
3942 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3943 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
3944 fatal_exit(1);
3945 }
3946 var3 = var5;
3947 RET_LABEL4:(void)0;
3948 }
3949 }
3950 var_mtype = var3;
3951 {
3952 var6 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var_mclass);
3953 }
3954 var_c_name = var6;
3955 {
3956 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$class_tables (self) on <self:SeparateErasureCompiler> */
3957 var9 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_tables].val; /* _class_tables on <self:SeparateErasureCompiler> */
3958 if (unlikely(var9 == NULL)) {
3959 if(catchStack.cursor >= 0){
3960 longjmp(catchStack.envs[catchStack.cursor], 1);
3961 }
3962 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_tables");
3963 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 427);
3964 fatal_exit(1);
3965 }
3966 var7 = var9;
3967 RET_LABEL8:(void)0;
3968 }
3969 }
3970 {
3971 var10 = ((val*(*)(val* self, val* p0))((((long)var7&3)?class_info[((long)var7&3)]:var7->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var7, var_mclass); /* [] on <var7:Map[MClass, Array[nullable MClass]]>*/
3972 }
3973 var_class_table = var10;
3974 {
3975 var11 = nitc___nitc__SeparateErasureCompiler___nitc__abstract_compiler__AbstractCompiler__new_visitor(self);
3976 }
3977 var_v = var11;
3978 {
3979 { /* Inline separate_compiler$SeparateCompiler$runtime_type_analysis (self) on <self:SeparateErasureCompiler> */
3980 var14 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateErasureCompiler> */
3981 var12 = var14;
3982 RET_LABEL13:(void)0;
3983 }
3984 }
3985 var_rta = var12;
3986 var_is_dead = 0;
3987 var19 = !var_is_dead;
3988 var_ = var19;
3989 if (var19){
3990 if (var_rta == NULL) {
3991 var20 = 0; /* is null */
3992 } else {
3993 var20 = 1; /* arg is null and recv is not */
3994 }
3995 if (0) {
3996 { /* Inline kernel$Object$!= (var_rta,((val*)NULL)) on <var_rta:nullable RapidTypeAnalysis> */
3997 var_other = ((val*)NULL);
3998 {
3999 var23 = ((short int(*)(val* self, val* p0))(var_rta->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_rta, var_other); /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/
4000 }
4001 var24 = !var23;
4002 var21 = var24;
4003 goto RET_LABEL22;
4004 RET_LABEL22:(void)0;
4005 }
4006 var20 = var21;
4007 }
4008 var18 = var20;
4009 } else {
4010 var18 = var_;
4011 }
4012 var_25 = var18;
4013 if (var18){
4014 {
4015 { /* Inline rapid_type_analysis$RapidTypeAnalysis$live_classes (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
4016 var28 = var_rta->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
4017 if (unlikely(var28 == NULL)) {
4018 if(catchStack.cursor >= 0){
4019 longjmp(catchStack.envs[catchStack.cursor], 1);
4020 }
4021 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
4022 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 69);
4023 fatal_exit(1);
4024 }
4025 var26 = var28;
4026 RET_LABEL27:(void)0;
4027 }
4028 }
4029 {
4030 var29 = core___core__HashSet___core__abstract_collection__Collection__has(var26, var_mclass);
4031 }
4032 var30 = !var29;
4033 var17 = var30;
4034 } else {
4035 var17 = var_25;
4036 }
4037 var_31 = var17;
4038 if (var17){
4039 {
4040 var32 = nitc__abstract_compiler___MClassType___MType__is_c_primitive(var_mtype);
4041 }
4042 var33 = !var32;
4043 var16 = var33;
4044 } else {
4045 var16 = var_31;
4046 }
4047 var_34 = var16;
4048 if (var16){
4049 {
4050 { /* Inline model$MClass$name (var_mclass) on <var_mclass:MClass> */
4051 var37 = var_mclass->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var_mclass:MClass> */
4052 if (unlikely(var37 == NULL)) {
4053 if(catchStack.cursor >= 0){
4054 longjmp(catchStack.envs[catchStack.cursor], 1);
4055 }
4056 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4057 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 396);
4058 fatal_exit(1);
4059 }
4060 var35 = var37;
4061 RET_LABEL36:(void)0;
4062 }
4063 }
4064 if (likely(varonce!=NULL)) {
4065 var38 = varonce;
4066 } else {
4067 var39 = "NativeArray";
4068 var41 = (val*)(11l<<2|1);
4069 var42 = (val*)(11l<<2|1);
4070 var43 = (val*)((long)(0)<<2|3);
4071 var44 = (val*)((long)(0)<<2|3);
4072 var40 = core__flat___CString___to_s_unsafe(var39, var41, var42, var43, var44);
4073 var38 = var40;
4074 varonce = var38;
4075 }
4076 {
4077 { /* Inline kernel$Object$!= (var35,var38) on <var35:String> */
4078 var_other = var38;
4079 {
4080 var47 = ((short int(*)(val* self, val* p0))(var35->class->vft[COLOR_core__kernel__Object___61d_61d]))(var35, var_other); /* == on <var35:String>*/
4081 }
4082 var48 = !var47;
4083 var45 = var48;
4084 goto RET_LABEL46;
4085 RET_LABEL46:(void)0;
4086 }
4087 }
4088 var15 = var45;
4089 } else {
4090 var15 = var_34;
4091 }
4092 if (var15){
4093 var_is_dead = 1;
4094 } else {
4095 }
4096 if (unlikely(varonce49==NULL)) {
4097 var50 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4098 if (likely(varonce51!=NULL)) {
4099 var52 = varonce51;
4100 } else {
4101 var53 = "/* runtime class ";
4102 var55 = (val*)(17l<<2|1);
4103 var56 = (val*)(17l<<2|1);
4104 var57 = (val*)((long)(0)<<2|3);
4105 var58 = (val*)((long)(0)<<2|3);
4106 var54 = core__flat___CString___to_s_unsafe(var53, var55, var56, var57, var58);
4107 var52 = var54;
4108 varonce51 = var52;
4109 }
4110 ((struct instance_core__NativeArray*)var50)->values[0]=var52;
4111 if (likely(varonce59!=NULL)) {
4112 var60 = varonce59;
4113 } else {
4114 var61 = " */";
4115 var63 = (val*)(3l<<2|1);
4116 var64 = (val*)(3l<<2|1);
4117 var65 = (val*)((long)(0)<<2|3);
4118 var66 = (val*)((long)(0)<<2|3);
4119 var62 = core__flat___CString___to_s_unsafe(var61, var63, var64, var65, var66);
4120 var60 = var62;
4121 varonce59 = var60;
4122 }
4123 ((struct instance_core__NativeArray*)var50)->values[2]=var60;
4124 } else {
4125 var50 = varonce49;
4126 varonce49 = NULL;
4127 }
4128 ((struct instance_core__NativeArray*)var50)->values[1]=var_c_name;
4129 {
4130 var67 = ((val*(*)(val* self))(var50->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var50); /* native_to_s on <var50:NativeArray[String]>*/
4131 }
4132 varonce49 = var50;
4133 {
4134 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var67); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4135 }
4136 if (unlikely(varonce68==NULL)) {
4137 var69 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4138 if (likely(varonce70!=NULL)) {
4139 var71 = varonce70;
4140 } else {
4141 var72 = "class_";
4142 var74 = (val*)(6l<<2|1);
4143 var75 = (val*)(6l<<2|1);
4144 var76 = (val*)((long)(0)<<2|3);
4145 var77 = (val*)((long)(0)<<2|3);
4146 var73 = core__flat___CString___to_s_unsafe(var72, var74, var75, var76, var77);
4147 var71 = var73;
4148 varonce70 = var71;
4149 }
4150 ((struct instance_core__NativeArray*)var69)->values[0]=var71;
4151 } else {
4152 var69 = varonce68;
4153 varonce68 = NULL;
4154 }
4155 ((struct instance_core__NativeArray*)var69)->values[1]=var_c_name;
4156 {
4157 var78 = ((val*(*)(val* self))(var69->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var69); /* native_to_s on <var69:NativeArray[String]>*/
4158 }
4159 varonce68 = var69;
4160 if (unlikely(varonce79==NULL)) {
4161 var80 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4162 if (likely(varonce81!=NULL)) {
4163 var82 = varonce81;
4164 } else {
4165 var83 = "extern const struct class class_";
4166 var85 = (val*)(32l<<2|1);
4167 var86 = (val*)(32l<<2|1);
4168 var87 = (val*)((long)(0)<<2|3);
4169 var88 = (val*)((long)(0)<<2|3);
4170 var84 = core__flat___CString___to_s_unsafe(var83, var85, var86, var87, var88);
4171 var82 = var84;
4172 varonce81 = var82;
4173 }
4174 ((struct instance_core__NativeArray*)var80)->values[0]=var82;
4175 if (likely(varonce89!=NULL)) {
4176 var90 = varonce89;
4177 } else {
4178 var91 = ";";
4179 var93 = (val*)(1l<<2|1);
4180 var94 = (val*)(1l<<2|1);
4181 var95 = (val*)((long)(0)<<2|3);
4182 var96 = (val*)((long)(0)<<2|3);
4183 var92 = core__flat___CString___to_s_unsafe(var91, var93, var94, var95, var96);
4184 var90 = var92;
4185 varonce89 = var90;
4186 }
4187 ((struct instance_core__NativeArray*)var80)->values[2]=var90;
4188 } else {
4189 var80 = varonce79;
4190 varonce79 = NULL;
4191 }
4192 ((struct instance_core__NativeArray*)var80)->values[1]=var_c_name;
4193 {
4194 var97 = ((val*(*)(val* self))(var80->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var80); /* native_to_s on <var80:NativeArray[String]>*/
4195 }
4196 varonce79 = var80;
4197 {
4198 nitc___nitc__AbstractCompiler___provide_declaration(self, var78, var97); /* Direct call abstract_compiler$AbstractCompiler$provide_declaration on <self:SeparateErasureCompiler>*/
4199 }
4200 if (unlikely(varonce98==NULL)) {
4201 var99 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4202 if (likely(varonce100!=NULL)) {
4203 var101 = varonce100;
4204 } else {
4205 var102 = "extern const struct type_table type_table_";
4206 var104 = (val*)(42l<<2|1);
4207 var105 = (val*)(42l<<2|1);
4208 var106 = (val*)((long)(0)<<2|3);
4209 var107 = (val*)((long)(0)<<2|3);
4210 var103 = core__flat___CString___to_s_unsafe(var102, var104, var105, var106, var107);
4211 var101 = var103;
4212 varonce100 = var101;
4213 }
4214 ((struct instance_core__NativeArray*)var99)->values[0]=var101;
4215 if (likely(varonce108!=NULL)) {
4216 var109 = varonce108;
4217 } else {
4218 var110 = ";";
4219 var112 = (val*)(1l<<2|1);
4220 var113 = (val*)(1l<<2|1);
4221 var114 = (val*)((long)(0)<<2|3);
4222 var115 = (val*)((long)(0)<<2|3);
4223 var111 = core__flat___CString___to_s_unsafe(var110, var112, var113, var114, var115);
4224 var109 = var111;
4225 varonce108 = var109;
4226 }
4227 ((struct instance_core__NativeArray*)var99)->values[2]=var109;
4228 } else {
4229 var99 = varonce98;
4230 varonce98 = NULL;
4231 }
4232 ((struct instance_core__NativeArray*)var99)->values[1]=var_c_name;
4233 {
4234 var116 = ((val*(*)(val* self))(var99->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var99); /* native_to_s on <var99:NativeArray[String]>*/
4235 }
4236 varonce98 = var99;
4237 {
4238 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var116); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4239 }
4240 if (unlikely(varonce117==NULL)) {
4241 var118 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4242 if (likely(varonce119!=NULL)) {
4243 var120 = varonce119;
4244 } else {
4245 var121 = "const struct class class_";
4246 var123 = (val*)(25l<<2|1);
4247 var124 = (val*)(25l<<2|1);
4248 var125 = (val*)((long)(0)<<2|3);
4249 var126 = (val*)((long)(0)<<2|3);
4250 var122 = core__flat___CString___to_s_unsafe(var121, var123, var124, var125, var126);
4251 var120 = var122;
4252 varonce119 = var120;
4253 }
4254 ((struct instance_core__NativeArray*)var118)->values[0]=var120;
4255 if (likely(varonce127!=NULL)) {
4256 var128 = varonce127;
4257 } else {
4258 var129 = " = {";
4259 var131 = (val*)(4l<<2|1);
4260 var132 = (val*)(4l<<2|1);
4261 var133 = (val*)((long)(0)<<2|3);
4262 var134 = (val*)((long)(0)<<2|3);
4263 var130 = core__flat___CString___to_s_unsafe(var129, var131, var132, var133, var134);
4264 var128 = var130;
4265 varonce127 = var128;
4266 }
4267 ((struct instance_core__NativeArray*)var118)->values[2]=var128;
4268 } else {
4269 var118 = varonce117;
4270 varonce117 = NULL;
4271 }
4272 ((struct instance_core__NativeArray*)var118)->values[1]=var_c_name;
4273 {
4274 var135 = ((val*(*)(val* self))(var118->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var118); /* native_to_s on <var118:NativeArray[String]>*/
4275 }
4276 varonce117 = var118;
4277 {
4278 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var135); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4279 }
4280 if (unlikely(varonce136==NULL)) {
4281 var137 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4282 if (likely(varonce138!=NULL)) {
4283 var139 = varonce138;
4284 } else {
4285 var140 = ",";
4286 var142 = (val*)(1l<<2|1);
4287 var143 = (val*)(1l<<2|1);
4288 var144 = (val*)((long)(0)<<2|3);
4289 var145 = (val*)((long)(0)<<2|3);
4290 var141 = core__flat___CString___to_s_unsafe(var140, var142, var143, var144, var145);
4291 var139 = var141;
4292 varonce138 = var139;
4293 }
4294 ((struct instance_core__NativeArray*)var137)->values[1]=var139;
4295 } else {
4296 var137 = varonce136;
4297 varonce136 = NULL;
4298 }
4299 {
4300 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$class_ids (self) on <self:SeparateErasureCompiler> */
4301 var148 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_ids].val; /* _class_ids on <self:SeparateErasureCompiler> */
4302 if (unlikely(var148 == NULL)) {
4303 if(catchStack.cursor >= 0){
4304 longjmp(catchStack.envs[catchStack.cursor], 1);
4305 }
4306 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_ids");
4307 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 84);
4308 fatal_exit(1);
4309 }
4310 var146 = var148;
4311 RET_LABEL147:(void)0;
4312 }
4313 }
4314 {
4315 var149 = ((val*(*)(val* self, val* p0))((((long)var146&3)?class_info[((long)var146&3)]:var146->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var146, var_mclass); /* [] on <var146:Map[MClass, Int]>*/
4316 }
4317 var151 = (long)(var149)>>2;
4318 var150 = core__flat___Int___core__abstract_text__Object__to_s(var151);
4319 ((struct instance_core__NativeArray*)var137)->values[0]=var150;
4320 {
4321 var152 = ((val*(*)(val* self))(var137->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var137); /* native_to_s on <var137:NativeArray[String]>*/
4322 }
4323 varonce136 = var137;
4324 {
4325 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var152); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4326 }
4327 if (unlikely(varonce153==NULL)) {
4328 var154 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4329 if (likely(varonce155!=NULL)) {
4330 var156 = varonce155;
4331 } else {
4332 var157 = "\"";
4333 var159 = (val*)(1l<<2|1);
4334 var160 = (val*)(1l<<2|1);
4335 var161 = (val*)((long)(0)<<2|3);
4336 var162 = (val*)((long)(0)<<2|3);
4337 var158 = core__flat___CString___to_s_unsafe(var157, var159, var160, var161, var162);
4338 var156 = var158;
4339 varonce155 = var156;
4340 }
4341 ((struct instance_core__NativeArray*)var154)->values[0]=var156;
4342 if (likely(varonce163!=NULL)) {
4343 var164 = varonce163;
4344 } else {
4345 var165 = "\", /* class_name_string */";
4346 var167 = (val*)(26l<<2|1);
4347 var168 = (val*)(26l<<2|1);
4348 var169 = (val*)((long)(0)<<2|3);
4349 var170 = (val*)((long)(0)<<2|3);
4350 var166 = core__flat___CString___to_s_unsafe(var165, var167, var168, var169, var170);
4351 var164 = var166;
4352 varonce163 = var164;
4353 }
4354 ((struct instance_core__NativeArray*)var154)->values[2]=var164;
4355 } else {
4356 var154 = varonce153;
4357 varonce153 = NULL;
4358 }
4359 {
4360 { /* Inline model$MClass$name (var_mclass) on <var_mclass:MClass> */
4361 var173 = var_mclass->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var_mclass:MClass> */
4362 if (unlikely(var173 == NULL)) {
4363 if(catchStack.cursor >= 0){
4364 longjmp(catchStack.envs[catchStack.cursor], 1);
4365 }
4366 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4367 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 396);
4368 fatal_exit(1);
4369 }
4370 var171 = var173;
4371 RET_LABEL172:(void)0;
4372 }
4373 }
4374 ((struct instance_core__NativeArray*)var154)->values[1]=var171;
4375 {
4376 var174 = ((val*(*)(val* self))(var154->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var154); /* native_to_s on <var154:NativeArray[String]>*/
4377 }
4378 varonce153 = var154;
4379 {
4380 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var174); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4381 }
4382 if (unlikely(varonce175==NULL)) {
4383 var176 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4384 if (likely(varonce177!=NULL)) {
4385 var178 = varonce177;
4386 } else {
4387 var179 = ", /* box_kind */";
4388 var181 = (val*)(16l<<2|1);
4389 var182 = (val*)(16l<<2|1);
4390 var183 = (val*)((long)(0)<<2|3);
4391 var184 = (val*)((long)(0)<<2|3);
4392 var180 = core__flat___CString___to_s_unsafe(var179, var181, var182, var183, var184);
4393 var178 = var180;
4394 varonce177 = var178;
4395 }
4396 ((struct instance_core__NativeArray*)var176)->values[1]=var178;
4397 } else {
4398 var176 = varonce175;
4399 varonce175 = NULL;
4400 }
4401 {
4402 var185 = nitc___nitc__SeparateCompiler___box_kind_of(self, var_mclass);
4403 }
4404 var186 = core__flat___Int___core__abstract_text__Object__to_s(var185);
4405 ((struct instance_core__NativeArray*)var176)->values[0]=var186;
4406 {
4407 var187 = ((val*(*)(val* self))(var176->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var176); /* native_to_s on <var176:NativeArray[String]>*/
4408 }
4409 varonce175 = var176;
4410 {
4411 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var187); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4412 }
4413 if (unlikely(varonce188==NULL)) {
4414 var189 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4415 if (likely(varonce190!=NULL)) {
4416 var191 = varonce190;
4417 } else {
4418 var192 = ",";
4419 var194 = (val*)(1l<<2|1);
4420 var195 = (val*)(1l<<2|1);
4421 var196 = (val*)((long)(0)<<2|3);
4422 var197 = (val*)((long)(0)<<2|3);
4423 var193 = core__flat___CString___to_s_unsafe(var192, var194, var195, var196, var197);
4424 var191 = var193;
4425 varonce190 = var191;
4426 }
4427 ((struct instance_core__NativeArray*)var189)->values[1]=var191;
4428 } else {
4429 var189 = varonce188;
4430 varonce188 = NULL;
4431 }
4432 {
4433 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$class_colors (self) on <self:SeparateErasureCompiler> */
4434 var200 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_colors].val; /* _class_colors on <self:SeparateErasureCompiler> */
4435 if (unlikely(var200 == NULL)) {
4436 if(catchStack.cursor >= 0){
4437 longjmp(catchStack.envs[catchStack.cursor], 1);
4438 }
4439 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_colors");
4440 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 85);
4441 fatal_exit(1);
4442 }
4443 var198 = var200;
4444 RET_LABEL199:(void)0;
4445 }
4446 }
4447 {
4448 var201 = ((val*(*)(val* self, val* p0))((((long)var198&3)?class_info[((long)var198&3)]:var198->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var198, var_mclass); /* [] on <var198:Map[MClass, Int]>*/
4449 }
4450 var203 = (long)(var201)>>2;
4451 var202 = core__flat___Int___core__abstract_text__Object__to_s(var203);
4452 ((struct instance_core__NativeArray*)var189)->values[0]=var202;
4453 {
4454 var204 = ((val*(*)(val* self))(var189->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var189); /* native_to_s on <var189:NativeArray[String]>*/
4455 }
4456 varonce188 = var189;
4457 {
4458 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var204); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4459 }
4460 var205 = !var_is_dead;
4461 if (var205){
4462 {
4463 var206 = nitc___nitc__SeparateErasureCompiler___build_class_vts_table(self, var_mclass);
4464 }
4465 if (var206){
4466 if (unlikely(varonce207==NULL)) {
4467 var208 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4468 if (likely(varonce209!=NULL)) {
4469 var210 = varonce209;
4470 } else {
4471 var211 = "vts_table_";
4472 var213 = (val*)(10l<<2|1);
4473 var214 = (val*)(10l<<2|1);
4474 var215 = (val*)((long)(0)<<2|3);
4475 var216 = (val*)((long)(0)<<2|3);
4476 var212 = core__flat___CString___to_s_unsafe(var211, var213, var214, var215, var216);
4477 var210 = var212;
4478 varonce209 = var210;
4479 }
4480 ((struct instance_core__NativeArray*)var208)->values[0]=var210;
4481 } else {
4482 var208 = varonce207;
4483 varonce207 = NULL;
4484 }
4485 ((struct instance_core__NativeArray*)var208)->values[1]=var_c_name;
4486 {
4487 var217 = ((val*(*)(val* self))(var208->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var208); /* native_to_s on <var208:NativeArray[String]>*/
4488 }
4489 varonce207 = var208;
4490 {
4491 nitc___nitc__AbstractCompilerVisitor___require_declaration(var_v, var217); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <var_v:SeparateCompilerVisitor>*/
4492 }
4493 if (unlikely(varonce218==NULL)) {
4494 var219 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4495 if (likely(varonce220!=NULL)) {
4496 var221 = varonce220;
4497 } else {
4498 var222 = "&vts_table_";
4499 var224 = (val*)(11l<<2|1);
4500 var225 = (val*)(11l<<2|1);
4501 var226 = (val*)((long)(0)<<2|3);
4502 var227 = (val*)((long)(0)<<2|3);
4503 var223 = core__flat___CString___to_s_unsafe(var222, var224, var225, var226, var227);
4504 var221 = var223;
4505 varonce220 = var221;
4506 }
4507 ((struct instance_core__NativeArray*)var219)->values[0]=var221;
4508 if (likely(varonce228!=NULL)) {
4509 var229 = varonce228;
4510 } else {
4511 var230 = ",";
4512 var232 = (val*)(1l<<2|1);
4513 var233 = (val*)(1l<<2|1);
4514 var234 = (val*)((long)(0)<<2|3);
4515 var235 = (val*)((long)(0)<<2|3);
4516 var231 = core__flat___CString___to_s_unsafe(var230, var232, var233, var234, var235);
4517 var229 = var231;
4518 varonce228 = var229;
4519 }
4520 ((struct instance_core__NativeArray*)var219)->values[2]=var229;
4521 } else {
4522 var219 = varonce218;
4523 varonce218 = NULL;
4524 }
4525 ((struct instance_core__NativeArray*)var219)->values[1]=var_c_name;
4526 {
4527 var236 = ((val*(*)(val* self))(var219->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var219); /* native_to_s on <var219:NativeArray[String]>*/
4528 }
4529 varonce218 = var219;
4530 {
4531 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var236); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4532 }
4533 } else {
4534 if (likely(varonce237!=NULL)) {
4535 var238 = varonce237;
4536 } else {
4537 var239 = "NULL,";
4538 var241 = (val*)(5l<<2|1);
4539 var242 = (val*)(5l<<2|1);
4540 var243 = (val*)((long)(0)<<2|3);
4541 var244 = (val*)((long)(0)<<2|3);
4542 var240 = core__flat___CString___to_s_unsafe(var239, var241, var242, var243, var244);
4543 var238 = var240;
4544 varonce237 = var238;
4545 }
4546 {
4547 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var238); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4548 }
4549 }
4550 if (unlikely(varonce245==NULL)) {
4551 var246 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4552 if (likely(varonce247!=NULL)) {
4553 var248 = varonce247;
4554 } else {
4555 var249 = "&type_table_";
4556 var251 = (val*)(12l<<2|1);
4557 var252 = (val*)(12l<<2|1);
4558 var253 = (val*)((long)(0)<<2|3);
4559 var254 = (val*)((long)(0)<<2|3);
4560 var250 = core__flat___CString___to_s_unsafe(var249, var251, var252, var253, var254);
4561 var248 = var250;
4562 varonce247 = var248;
4563 }
4564 ((struct instance_core__NativeArray*)var246)->values[0]=var248;
4565 if (likely(varonce255!=NULL)) {
4566 var256 = varonce255;
4567 } else {
4568 var257 = ",";
4569 var259 = (val*)(1l<<2|1);
4570 var260 = (val*)(1l<<2|1);
4571 var261 = (val*)((long)(0)<<2|3);
4572 var262 = (val*)((long)(0)<<2|3);
4573 var258 = core__flat___CString___to_s_unsafe(var257, var259, var260, var261, var262);
4574 var256 = var258;
4575 varonce255 = var256;
4576 }
4577 ((struct instance_core__NativeArray*)var246)->values[2]=var256;
4578 } else {
4579 var246 = varonce245;
4580 varonce245 = NULL;
4581 }
4582 ((struct instance_core__NativeArray*)var246)->values[1]=var_c_name;
4583 {
4584 var263 = ((val*(*)(val* self))(var246->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var246); /* native_to_s on <var246:NativeArray[String]>*/
4585 }
4586 varonce245 = var246;
4587 {
4588 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var263); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4589 }
4590 if (likely(varonce264!=NULL)) {
4591 var265 = varonce264;
4592 } else {
4593 var266 = "{";
4594 var268 = (val*)(1l<<2|1);
4595 var269 = (val*)(1l<<2|1);
4596 var270 = (val*)((long)(0)<<2|3);
4597 var271 = (val*)((long)(0)<<2|3);
4598 var267 = core__flat___CString___to_s_unsafe(var266, var268, var269, var270, var271);
4599 var265 = var267;
4600 varonce264 = var265;
4601 }
4602 {
4603 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var265); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4604 }
4605 {
4606 { /* Inline separate_compiler$SeparateCompiler$method_tables (self) on <self:SeparateErasureCompiler> */
4607 var274 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___method_tables].val; /* _method_tables on <self:SeparateErasureCompiler> */
4608 if (unlikely(var274 == NULL)) {
4609 if(catchStack.cursor >= 0){
4610 longjmp(catchStack.envs[catchStack.cursor], 1);
4611 }
4612 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
4613 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1073);
4614 fatal_exit(1);
4615 }
4616 var272 = var274;
4617 RET_LABEL273:(void)0;
4618 }
4619 }
4620 {
4621 var275 = ((val*(*)(val* self, val* p0))((((long)var272&3)?class_info[((long)var272&3)]:var272->class)->vft[COLOR_core__abstract_collection__MapRead__get_or_null]))(var272, var_mclass); /* get_or_null on <var272:Map[MClass, Array[nullable MPropDef]]>*/
4622 }
4623 var_vft = var275;
4624 if (var_vft == NULL) {
4625 var276 = 0; /* is null */
4626 } else {
4627 var276 = 1; /* arg is null and recv is not */
4628 }
4629 if (0) {
4630 { /* Inline kernel$Object$!= (var_vft,((val*)NULL)) on <var_vft:nullable Array[nullable MPropDef]> */
4631 var_other = ((val*)NULL);
4632 {
4633 var279 = ((short int(*)(val* self, val* p0))(var_vft->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_vft, var_other); /* == on <var_vft:nullable Array[nullable MPropDef](Array[nullable MPropDef])>*/
4634 }
4635 var280 = !var279;
4636 var277 = var280;
4637 goto RET_LABEL278;
4638 RET_LABEL278:(void)0;
4639 }
4640 var276 = var277;
4641 }
4642 if (var276){
4643 var_i = 0l;
4644 {
4645 { /* Inline array$AbstractArrayRead$length (var_vft) on <var_vft:nullable Array[nullable MPropDef](Array[nullable MPropDef])> */
4646 var283 = var_vft->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_vft:nullable Array[nullable MPropDef](Array[nullable MPropDef])> */
4647 var281 = var283;
4648 RET_LABEL282:(void)0;
4649 }
4650 }
4651 var_284 = var281;
4652 for(;;) {
4653 {
4654 { /* Inline kernel$Int$< (var_i,var_284) on <var_i:Int> */
4655 /* Covariant cast for argument 0 (i) <var_284:Int> isa OTHER */
4656 /* <var_284:Int> isa OTHER */
4657 var287 = 1; /* easy <var_284:Int> isa OTHER*/
4658 if (unlikely(!var287)) {
4659 var_class_name = type_core__Int.name;
4660 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4661 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
4662 fatal_exit(1);
4663 }
4664 var288 = var_i < var_284;
4665 var285 = var288;
4666 goto RET_LABEL286;
4667 RET_LABEL286:(void)0;
4668 }
4669 }
4670 if (var285){
4671 } else {
4672 goto BREAK_label;
4673 }
4674 {
4675 var289 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_vft, var_i);
4676 }
4677 var_mpropdef = var289;
4678 if (var_mpropdef == NULL) {
4679 var290 = 1; /* is null */
4680 } else {
4681 var290 = 0; /* arg is null but recv is not */
4682 }
4683 if (0) {
4684 { /* Inline kernel$Object$== (var_mpropdef,((val*)NULL)) on <var_mpropdef:nullable MPropDef> */
4685 var_other293 = ((val*)NULL);
4686 {
4687 { /* Inline kernel$Object$is_same_instance (var_mpropdef,var_other293) on <var_mpropdef:nullable MPropDef(MPropDef)> */
4688 var296 = var_mpropdef == var_other293;
4689 var294 = var296;
4690 goto RET_LABEL295;
4691 RET_LABEL295:(void)0;
4692 }
4693 }
4694 var291 = var294;
4695 goto RET_LABEL292;
4696 RET_LABEL292:(void)0;
4697 }
4698 var290 = var291;
4699 }
4700 if (var290){
4701 if (likely(varonce297!=NULL)) {
4702 var298 = varonce297;
4703 } else {
4704 var299 = "NULL, /* empty */";
4705 var301 = (val*)(17l<<2|1);
4706 var302 = (val*)(17l<<2|1);
4707 var303 = (val*)((long)(0)<<2|3);
4708 var304 = (val*)((long)(0)<<2|3);
4709 var300 = core__flat___CString___to_s_unsafe(var299, var301, var302, var303, var304);
4710 var298 = var300;
4711 varonce297 = var298;
4712 }
4713 {
4714 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var298); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4715 }
4716 } else {
4717 /* <var_mpropdef:nullable MPropDef(MPropDef)> isa MMethodDef */
4718 cltype306 = type_nitc__MMethodDef.color;
4719 idtype307 = type_nitc__MMethodDef.id;
4720 if(cltype306 >= var_mpropdef->type->table_size) {
4721 var305 = 0;
4722 } else {
4723 var305 = var_mpropdef->type->type_table[cltype306] == idtype307;
4724 }
4725 if (unlikely(!var305)) {
4726 if(catchStack.cursor >= 0){
4727 longjmp(catchStack.envs[catchStack.cursor], 1);
4728 }
4729 PRINT_ERROR("Runtime error: %s", "Assert failed");
4730 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 237);
4731 fatal_exit(1);
4732 }
4733 if (var_rta == NULL) {
4734 var309 = 0; /* is null */
4735 } else {
4736 var309 = 1; /* arg is null and recv is not */
4737 }
4738 if (0) {
4739 { /* Inline kernel$Object$!= (var_rta,((val*)NULL)) on <var_rta:nullable RapidTypeAnalysis> */
4740 var_other = ((val*)NULL);
4741 {
4742 var312 = ((short int(*)(val* self, val* p0))(var_rta->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_rta, var_other); /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/
4743 }
4744 var313 = !var312;
4745 var310 = var313;
4746 goto RET_LABEL311;
4747 RET_LABEL311:(void)0;
4748 }
4749 var309 = var310;
4750 }
4751 var_314 = var309;
4752 if (var309){
4753 {
4754 { /* Inline rapid_type_analysis$RapidTypeAnalysis$live_methoddefs (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
4755 var317 = var_rta->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
4756 if (unlikely(var317 == NULL)) {
4757 if(catchStack.cursor >= 0){
4758 longjmp(catchStack.envs[catchStack.cursor], 1);
4759 }
4760 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
4761 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 79);
4762 fatal_exit(1);
4763 }
4764 var315 = var317;
4765 RET_LABEL316:(void)0;
4766 }
4767 }
4768 {
4769 var318 = core___core__HashSet___core__abstract_collection__Collection__has(var315, var_mpropdef);
4770 }
4771 var319 = !var318;
4772 var308 = var319;
4773 } else {
4774 var308 = var_314;
4775 }
4776 if (var308){
4777 if (unlikely(varonce320==NULL)) {
4778 var321 = NEW_core__NativeArray((int)7l, &type_core__NativeArray__core__String);
4779 if (likely(varonce322!=NULL)) {
4780 var323 = varonce322;
4781 } else {
4782 var324 = "NULL, /* DEAD ";
4783 var326 = (val*)(14l<<2|1);
4784 var327 = (val*)(14l<<2|1);
4785 var328 = (val*)((long)(0)<<2|3);
4786 var329 = (val*)((long)(0)<<2|3);
4787 var325 = core__flat___CString___to_s_unsafe(var324, var326, var327, var328, var329);
4788 var323 = var325;
4789 varonce322 = var323;
4790 }
4791 ((struct instance_core__NativeArray*)var321)->values[0]=var323;
4792 if (likely(varonce330!=NULL)) {
4793 var331 = varonce330;
4794 } else {
4795 var332 = ":";
4796 var334 = (val*)(1l<<2|1);
4797 var335 = (val*)(1l<<2|1);
4798 var336 = (val*)((long)(0)<<2|3);
4799 var337 = (val*)((long)(0)<<2|3);
4800 var333 = core__flat___CString___to_s_unsafe(var332, var334, var335, var336, var337);
4801 var331 = var333;
4802 varonce330 = var331;
4803 }
4804 ((struct instance_core__NativeArray*)var321)->values[2]=var331;
4805 if (likely(varonce338!=NULL)) {
4806 var339 = varonce338;
4807 } else {
4808 var340 = ":";
4809 var342 = (val*)(1l<<2|1);
4810 var343 = (val*)(1l<<2|1);
4811 var344 = (val*)((long)(0)<<2|3);
4812 var345 = (val*)((long)(0)<<2|3);
4813 var341 = core__flat___CString___to_s_unsafe(var340, var342, var343, var344, var345);
4814 var339 = var341;
4815 varonce338 = var339;
4816 }
4817 ((struct instance_core__NativeArray*)var321)->values[4]=var339;
4818 if (likely(varonce346!=NULL)) {
4819 var347 = varonce346;
4820 } else {
4821 var348 = " */";
4822 var350 = (val*)(3l<<2|1);
4823 var351 = (val*)(3l<<2|1);
4824 var352 = (val*)((long)(0)<<2|3);
4825 var353 = (val*)((long)(0)<<2|3);
4826 var349 = core__flat___CString___to_s_unsafe(var348, var350, var351, var352, var353);
4827 var347 = var349;
4828 varonce346 = var347;
4829 }
4830 ((struct instance_core__NativeArray*)var321)->values[6]=var347;
4831 } else {
4832 var321 = varonce320;
4833 varonce320 = NULL;
4834 }
4835 {
4836 { /* Inline model$MClass$intro_mmodule (var_mclass) on <var_mclass:MClass> */
4837 var356 = var_mclass->attrs[COLOR_nitc__model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_mclass:MClass> */
4838 if (unlikely(var356 == NULL)) {
4839 if(catchStack.cursor >= 0){
4840 longjmp(catchStack.envs[catchStack.cursor], 1);
4841 }
4842 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
4843 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 390);
4844 fatal_exit(1);
4845 }
4846 var354 = var356;
4847 RET_LABEL355:(void)0;
4848 }
4849 }
4850 {
4851 var357 = ((val*(*)(val* self))(var354->class->vft[COLOR_core__abstract_text__Object__to_s]))(var354); /* to_s on <var354:MModule>*/
4852 }
4853 ((struct instance_core__NativeArray*)var321)->values[1]=var357;
4854 {
4855 var358 = ((val*(*)(val* self))(var_mclass->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mclass); /* to_s on <var_mclass:MClass>*/
4856 }
4857 ((struct instance_core__NativeArray*)var321)->values[3]=var358;
4858 {
4859 var359 = ((val*(*)(val* self))(var_mpropdef->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mpropdef); /* to_s on <var_mpropdef:nullable MPropDef(MMethodDef)>*/
4860 }
4861 ((struct instance_core__NativeArray*)var321)->values[5]=var359;
4862 {
4863 var360 = ((val*(*)(val* self))(var321->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var321); /* native_to_s on <var321:NativeArray[String]>*/
4864 }
4865 varonce320 = var321;
4866 {
4867 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var360); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4868 }
4869 goto BREAK_label361;
4870 } else {
4871 }
4872 {
4873 var362 = nitc__separate_compiler___MMethodDef___virtual_runtime_function(var_mpropdef);
4874 }
4875 var_rf = var362;
4876 {
4877 var363 = nitc___nitc__AbstractRuntimeFunction___c_name(var_rf);
4878 }
4879 {
4880 nitc___nitc__AbstractCompilerVisitor___require_declaration(var_v, var363); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <var_v:SeparateCompilerVisitor>*/
4881 }
4882 if (unlikely(varonce364==NULL)) {
4883 var365 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
4884 if (likely(varonce366!=NULL)) {
4885 var367 = varonce366;
4886 } else {
4887 var368 = "(nitmethod_t)";
4888 var370 = (val*)(13l<<2|1);
4889 var371 = (val*)(13l<<2|1);
4890 var372 = (val*)((long)(0)<<2|3);
4891 var373 = (val*)((long)(0)<<2|3);
4892 var369 = core__flat___CString___to_s_unsafe(var368, var370, var371, var372, var373);
4893 var367 = var369;
4894 varonce366 = var367;
4895 }
4896 ((struct instance_core__NativeArray*)var365)->values[0]=var367;
4897 if (likely(varonce374!=NULL)) {
4898 var375 = varonce374;
4899 } else {
4900 var376 = ", /* pointer to ";
4901 var378 = (val*)(16l<<2|1);
4902 var379 = (val*)(16l<<2|1);
4903 var380 = (val*)((long)(0)<<2|3);
4904 var381 = (val*)((long)(0)<<2|3);
4905 var377 = core__flat___CString___to_s_unsafe(var376, var378, var379, var380, var381);
4906 var375 = var377;
4907 varonce374 = var375;
4908 }
4909 ((struct instance_core__NativeArray*)var365)->values[2]=var375;
4910 if (likely(varonce382!=NULL)) {
4911 var383 = varonce382;
4912 } else {
4913 var384 = " */";
4914 var386 = (val*)(3l<<2|1);
4915 var387 = (val*)(3l<<2|1);
4916 var388 = (val*)((long)(0)<<2|3);
4917 var389 = (val*)((long)(0)<<2|3);
4918 var385 = core__flat___CString___to_s_unsafe(var384, var386, var387, var388, var389);
4919 var383 = var385;
4920 varonce382 = var383;
4921 }
4922 ((struct instance_core__NativeArray*)var365)->values[4]=var383;
4923 } else {
4924 var365 = varonce364;
4925 varonce364 = NULL;
4926 }
4927 {
4928 var390 = nitc___nitc__AbstractRuntimeFunction___c_name(var_rf);
4929 }
4930 ((struct instance_core__NativeArray*)var365)->values[1]=var390;
4931 {
4932 var391 = nitc___nitc__MPropDef___nitc__model_base__MEntity__full_name(var_mpropdef);
4933 }
4934 ((struct instance_core__NativeArray*)var365)->values[3]=var391;
4935 {
4936 var392 = ((val*(*)(val* self))(var365->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var365); /* native_to_s on <var365:NativeArray[String]>*/
4937 }
4938 varonce364 = var365;
4939 {
4940 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var392); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4941 }
4942 }
4943 BREAK_label361: (void)0;
4944 {
4945 var393 = core___core__Int___Discrete__successor(var_i, 1l);
4946 }
4947 var_i = var393;
4948 }
4949 BREAK_label: (void)0;
4950 } else {
4951 }
4952 if (likely(varonce394!=NULL)) {
4953 var395 = varonce394;
4954 } else {
4955 var396 = "}";
4956 var398 = (val*)(1l<<2|1);
4957 var399 = (val*)(1l<<2|1);
4958 var400 = (val*)((long)(0)<<2|3);
4959 var401 = (val*)((long)(0)<<2|3);
4960 var397 = core__flat___CString___to_s_unsafe(var396, var398, var399, var400, var401);
4961 var395 = var397;
4962 varonce394 = var395;
4963 }
4964 {
4965 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var395); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4966 }
4967 } else {
4968 }
4969 if (likely(varonce402!=NULL)) {
4970 var403 = varonce402;
4971 } else {
4972 var404 = "};";
4973 var406 = (val*)(2l<<2|1);
4974 var407 = (val*)(2l<<2|1);
4975 var408 = (val*)((long)(0)<<2|3);
4976 var409 = (val*)((long)(0)<<2|3);
4977 var405 = core__flat___CString___to_s_unsafe(var404, var406, var407, var408, var409);
4978 var403 = var405;
4979 varonce402 = var403;
4980 }
4981 {
4982 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var403); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
4983 }
4984 if (unlikely(varonce410==NULL)) {
4985 var411 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4986 if (likely(varonce412!=NULL)) {
4987 var413 = varonce412;
4988 } else {
4989 var414 = "const struct type_table type_table_";
4990 var416 = (val*)(35l<<2|1);
4991 var417 = (val*)(35l<<2|1);
4992 var418 = (val*)((long)(0)<<2|3);
4993 var419 = (val*)((long)(0)<<2|3);
4994 var415 = core__flat___CString___to_s_unsafe(var414, var416, var417, var418, var419);
4995 var413 = var415;
4996 varonce412 = var413;
4997 }
4998 ((struct instance_core__NativeArray*)var411)->values[0]=var413;
4999 if (likely(varonce420!=NULL)) {
5000 var421 = varonce420;
5001 } else {
5002 var422 = " = {";
5003 var424 = (val*)(4l<<2|1);
5004 var425 = (val*)(4l<<2|1);
5005 var426 = (val*)((long)(0)<<2|3);
5006 var427 = (val*)((long)(0)<<2|3);
5007 var423 = core__flat___CString___to_s_unsafe(var422, var424, var425, var426, var427);
5008 var421 = var423;
5009 varonce420 = var421;
5010 }
5011 ((struct instance_core__NativeArray*)var411)->values[2]=var421;
5012 } else {
5013 var411 = varonce410;
5014 varonce410 = NULL;
5015 }
5016 ((struct instance_core__NativeArray*)var411)->values[1]=var_c_name;
5017 {
5018 var428 = ((val*(*)(val* self))(var411->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var411); /* native_to_s on <var411:NativeArray[String]>*/
5019 }
5020 varonce410 = var411;
5021 {
5022 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var428); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
5023 }
5024 if (unlikely(varonce429==NULL)) {
5025 var430 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
5026 if (likely(varonce431!=NULL)) {
5027 var432 = varonce431;
5028 } else {
5029 var433 = ",";
5030 var435 = (val*)(1l<<2|1);
5031 var436 = (val*)(1l<<2|1);
5032 var437 = (val*)((long)(0)<<2|3);
5033 var438 = (val*)((long)(0)<<2|3);
5034 var434 = core__flat___CString___to_s_unsafe(var433, var435, var436, var437, var438);
5035 var432 = var434;
5036 varonce431 = var432;
5037 }
5038 ((struct instance_core__NativeArray*)var430)->values[1]=var432;
5039 } else {
5040 var430 = varonce429;
5041 varonce429 = NULL;
5042 }
5043 {
5044 { /* Inline array$AbstractArrayRead$length (var_class_table) on <var_class_table:Array[nullable MClass]> */
5045 var441 = var_class_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_class_table:Array[nullable MClass]> */
5046 var439 = var441;
5047 RET_LABEL440:(void)0;
5048 }
5049 }
5050 var442 = core__flat___Int___core__abstract_text__Object__to_s(var439);
5051 ((struct instance_core__NativeArray*)var430)->values[0]=var442;
5052 {
5053 var443 = ((val*(*)(val* self))(var430->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var430); /* native_to_s on <var430:NativeArray[String]>*/
5054 }
5055 varonce429 = var430;
5056 {
5057 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var443); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
5058 }
5059 if (likely(varonce444!=NULL)) {
5060 var445 = varonce444;
5061 } else {
5062 var446 = "{";
5063 var448 = (val*)(1l<<2|1);
5064 var449 = (val*)(1l<<2|1);
5065 var450 = (val*)((long)(0)<<2|3);
5066 var451 = (val*)((long)(0)<<2|3);
5067 var447 = core__flat___CString___to_s_unsafe(var446, var448, var449, var450, var451);
5068 var445 = var447;
5069 varonce444 = var445;
5070 }
5071 {
5072 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var445); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
5073 }
5074 var_452 = var_class_table;
5075 {
5076 var453 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_452);
5077 }
5078 var_454 = var453;
5079 for(;;) {
5080 {
5081 var455 = ((short int(*)(val* self))((((long)var_454&3)?class_info[((long)var_454&3)]:var_454->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_454); /* is_ok on <var_454:IndexedIterator[nullable MClass]>*/
5082 }
5083 if (var455){
5084 } else {
5085 goto BREAK_label456;
5086 }
5087 {
5088 var457 = ((val*(*)(val* self))((((long)var_454&3)?class_info[((long)var_454&3)]:var_454->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_454); /* item on <var_454:IndexedIterator[nullable MClass]>*/
5089 }
5090 var_msuper = var457;
5091 if (var_msuper == NULL) {
5092 var458 = 1; /* is null */
5093 } else {
5094 var458 = 0; /* arg is null but recv is not */
5095 }
5096 if (0) {
5097 { /* Inline kernel$Object$== (var_msuper,((val*)NULL)) on <var_msuper:nullable MClass> */
5098 var_other293 = ((val*)NULL);
5099 {
5100 { /* Inline kernel$Object$is_same_instance (var_msuper,var_other293) on <var_msuper:nullable MClass(MClass)> */
5101 var463 = var_msuper == var_other293;
5102 var461 = var463;
5103 goto RET_LABEL462;
5104 RET_LABEL462:(void)0;
5105 }
5106 }
5107 var459 = var461;
5108 goto RET_LABEL460;
5109 RET_LABEL460:(void)0;
5110 }
5111 var458 = var459;
5112 }
5113 if (var458){
5114 if (likely(varonce464!=NULL)) {
5115 var465 = varonce464;
5116 } else {
5117 var466 = "-1, /* empty */";
5118 var468 = (val*)(15l<<2|1);
5119 var469 = (val*)(15l<<2|1);
5120 var470 = (val*)((long)(0)<<2|3);
5121 var471 = (val*)((long)(0)<<2|3);
5122 var467 = core__flat___CString___to_s_unsafe(var466, var468, var469, var470, var471);
5123 var465 = var467;
5124 varonce464 = var465;
5125 }
5126 {
5127 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var465); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
5128 }
5129 } else {
5130 if (unlikely(varonce472==NULL)) {
5131 var473 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
5132 if (likely(varonce474!=NULL)) {
5133 var475 = varonce474;
5134 } else {
5135 var476 = ", /* ";
5136 var478 = (val*)(5l<<2|1);
5137 var479 = (val*)(5l<<2|1);
5138 var480 = (val*)((long)(0)<<2|3);
5139 var481 = (val*)((long)(0)<<2|3);
5140 var477 = core__flat___CString___to_s_unsafe(var476, var478, var479, var480, var481);
5141 var475 = var477;
5142 varonce474 = var475;
5143 }
5144 ((struct instance_core__NativeArray*)var473)->values[1]=var475;
5145 if (likely(varonce482!=NULL)) {
5146 var483 = varonce482;
5147 } else {
5148 var484 = " */";
5149 var486 = (val*)(3l<<2|1);
5150 var487 = (val*)(3l<<2|1);
5151 var488 = (val*)((long)(0)<<2|3);
5152 var489 = (val*)((long)(0)<<2|3);
5153 var485 = core__flat___CString___to_s_unsafe(var484, var486, var487, var488, var489);
5154 var483 = var485;
5155 varonce482 = var483;
5156 }
5157 ((struct instance_core__NativeArray*)var473)->values[3]=var483;
5158 } else {
5159 var473 = varonce472;
5160 varonce472 = NULL;
5161 }
5162 {
5163 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$class_ids (self) on <self:SeparateErasureCompiler> */
5164 var492 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_ids].val; /* _class_ids on <self:SeparateErasureCompiler> */
5165 if (unlikely(var492 == NULL)) {
5166 if(catchStack.cursor >= 0){
5167 longjmp(catchStack.envs[catchStack.cursor], 1);
5168 }
5169 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_ids");
5170 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 84);
5171 fatal_exit(1);
5172 }
5173 var490 = var492;
5174 RET_LABEL491:(void)0;
5175 }
5176 }
5177 {
5178 var493 = ((val*(*)(val* self, val* p0))((((long)var490&3)?class_info[((long)var490&3)]:var490->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var490, var_msuper); /* [] on <var490:Map[MClass, Int]>*/
5179 }
5180 var495 = (long)(var493)>>2;
5181 var494 = core__flat___Int___core__abstract_text__Object__to_s(var495);
5182 ((struct instance_core__NativeArray*)var473)->values[0]=var494;
5183 {
5184 var496 = ((val*(*)(val* self))(var_msuper->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_msuper); /* to_s on <var_msuper:nullable MClass(MClass)>*/
5185 }
5186 ((struct instance_core__NativeArray*)var473)->values[2]=var496;
5187 {
5188 var497 = ((val*(*)(val* self))(var473->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var473); /* native_to_s on <var473:NativeArray[String]>*/
5189 }
5190 varonce472 = var473;
5191 {
5192 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var497); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
5193 }
5194 }
5195 {
5196 ((void(*)(val* self))((((long)var_454&3)?class_info[((long)var_454&3)]:var_454->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_454); /* next on <var_454:IndexedIterator[nullable MClass]>*/
5197 }
5198 }
5199 BREAK_label456: (void)0;
5200 {
5201 ((void(*)(val* self))((((long)var_454&3)?class_info[((long)var_454&3)]:var_454->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_454); /* finish on <var_454:IndexedIterator[nullable MClass]>*/
5202 }
5203 if (likely(varonce498!=NULL)) {
5204 var499 = varonce498;
5205 } else {
5206 var500 = "}";
5207 var502 = (val*)(1l<<2|1);
5208 var503 = (val*)(1l<<2|1);
5209 var504 = (val*)((long)(0)<<2|3);
5210 var505 = (val*)((long)(0)<<2|3);
5211 var501 = core__flat___CString___to_s_unsafe(var500, var502, var503, var504, var505);
5212 var499 = var501;
5213 varonce498 = var499;
5214 }
5215 {
5216 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var499); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
5217 }
5218 if (likely(varonce506!=NULL)) {
5219 var507 = varonce506;
5220 } else {
5221 var508 = "};";
5222 var510 = (val*)(2l<<2|1);
5223 var511 = (val*)(2l<<2|1);
5224 var512 = (val*)((long)(0)<<2|3);
5225 var513 = (val*)((long)(0)<<2|3);
5226 var509 = core__flat___CString___to_s_unsafe(var508, var510, var511, var512, var513);
5227 var507 = var509;
5228 varonce506 = var507;
5229 }
5230 {
5231 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var507); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
5232 }
5233 {
5234 var515 = nitc__abstract_compiler___MClassType___MType__is_c_primitive(var_mtype);
5235 }
5236 var_516 = var515;
5237 if (var515){
5238 var514 = var_516;
5239 } else {
5240 {
5241 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MClassType> */
5242 var519 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
5243 if (unlikely(var519 == NULL)) {
5244 if(catchStack.cursor >= 0){
5245 longjmp(catchStack.envs[catchStack.cursor], 1);
5246 }
5247 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5248 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
5249 fatal_exit(1);
5250 }
5251 var517 = var519;
5252 RET_LABEL518:(void)0;
5253 }
5254 }
5255 {
5256 { /* Inline model$MClass$name (var517) on <var517:MClass> */
5257 var522 = var517->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var517:MClass> */
5258 if (unlikely(var522 == NULL)) {
5259 if(catchStack.cursor >= 0){
5260 longjmp(catchStack.envs[catchStack.cursor], 1);
5261 }
5262 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5263 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 396);
5264 fatal_exit(1);
5265 }
5266 var520 = var522;
5267 RET_LABEL521:(void)0;
5268 }
5269 }
5270 if (likely(varonce523!=NULL)) {
5271 var524 = varonce523;
5272 } else {
5273 var525 = "Pointer";
5274 var527 = (val*)(7l<<2|1);
5275 var528 = (val*)(7l<<2|1);
5276 var529 = (val*)((long)(0)<<2|3);
5277 var530 = (val*)((long)(0)<<2|3);
5278 var526 = core__flat___CString___to_s_unsafe(var525, var527, var528, var529, var530);
5279 var524 = var526;
5280 varonce523 = var524;
5281 }
5282 {
5283 var531 = ((short int(*)(val* self, val* p0))(var520->class->vft[COLOR_core__kernel__Object___61d_61d]))(var520, var524); /* == on <var520:String>*/
5284 }
5285 var514 = var531;
5286 }
5287 if (var514){
5288 {
5289 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
5290 var534 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
5291 if (unlikely(var534 == NULL)) {
5292 if(catchStack.cursor >= 0){
5293 longjmp(catchStack.envs[catchStack.cursor], 1);
5294 }
5295 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
5296 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
5297 fatal_exit(1);
5298 }
5299 var532 = var534;
5300 RET_LABEL533:(void)0;
5301 }
5302 }
5303 if (unlikely(varonce535==NULL)) {
5304 var536 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
5305 if (likely(varonce537!=NULL)) {
5306 var538 = varonce537;
5307 } else {
5308 var539 = "struct instance_";
5309 var541 = (val*)(16l<<2|1);
5310 var542 = (val*)(16l<<2|1);
5311 var543 = (val*)((long)(0)<<2|3);
5312 var544 = (val*)((long)(0)<<2|3);
5313 var540 = core__flat___CString___to_s_unsafe(var539, var541, var542, var543, var544);
5314 var538 = var540;
5315 varonce537 = var538;
5316 }
5317 ((struct instance_core__NativeArray*)var536)->values[0]=var538;
5318 if (likely(varonce545!=NULL)) {
5319 var546 = varonce545;
5320 } else {
5321 var547 = " {";
5322 var549 = (val*)(2l<<2|1);
5323 var550 = (val*)(2l<<2|1);
5324 var551 = (val*)((long)(0)<<2|3);
5325 var552 = (val*)((long)(0)<<2|3);
5326 var548 = core__flat___CString___to_s_unsafe(var547, var549, var550, var551, var552);
5327 var546 = var548;
5328 varonce545 = var546;
5329 }
5330 ((struct instance_core__NativeArray*)var536)->values[2]=var546;
5331 } else {
5332 var536 = varonce535;
5333 varonce535 = NULL;
5334 }
5335 ((struct instance_core__NativeArray*)var536)->values[1]=var_c_name;
5336 {
5337 var553 = ((val*(*)(val* self))(var536->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var536); /* native_to_s on <var536:NativeArray[String]>*/
5338 }
5339 varonce535 = var536;
5340 {
5341 nitc___nitc__CodeWriter___add_decl(var532, var553); /* Direct call abstract_compiler$CodeWriter$add_decl on <var532:CodeWriter>*/
5342 }
5343 {
5344 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
5345 var556 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
5346 if (unlikely(var556 == NULL)) {
5347 if(catchStack.cursor >= 0){
5348 longjmp(catchStack.envs[catchStack.cursor], 1);
5349 }
5350 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
5351 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
5352 fatal_exit(1);
5353 }
5354 var554 = var556;
5355 RET_LABEL555:(void)0;
5356 }
5357 }
5358 if (likely(varonce557!=NULL)) {
5359 var558 = varonce557;
5360 } else {
5361 var559 = "const struct class *class;";
5362 var561 = (val*)(26l<<2|1);
5363 var562 = (val*)(26l<<2|1);
5364 var563 = (val*)((long)(0)<<2|3);
5365 var564 = (val*)((long)(0)<<2|3);
5366 var560 = core__flat___CString___to_s_unsafe(var559, var561, var562, var563, var564);
5367 var558 = var560;
5368 varonce557 = var558;
5369 }
5370 {
5371 nitc___nitc__CodeWriter___add_decl(var554, var558); /* Direct call abstract_compiler$CodeWriter$add_decl on <var554:CodeWriter>*/
5372 }
5373 {
5374 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
5375 var567 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
5376 if (unlikely(var567 == NULL)) {
5377 if(catchStack.cursor >= 0){
5378 longjmp(catchStack.envs[catchStack.cursor], 1);
5379 }
5380 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
5381 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
5382 fatal_exit(1);
5383 }
5384 var565 = var567;
5385 RET_LABEL566:(void)0;
5386 }
5387 }
5388 if (unlikely(varonce568==NULL)) {
5389 var569 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
5390 if (likely(varonce570!=NULL)) {
5391 var571 = varonce570;
5392 } else {
5393 var572 = " value;";
5394 var574 = (val*)(7l<<2|1);
5395 var575 = (val*)(7l<<2|1);
5396 var576 = (val*)((long)(0)<<2|3);
5397 var577 = (val*)((long)(0)<<2|3);
5398 var573 = core__flat___CString___to_s_unsafe(var572, var574, var575, var576, var577);
5399 var571 = var573;
5400 varonce570 = var571;
5401 }
5402 ((struct instance_core__NativeArray*)var569)->values[1]=var571;
5403 } else {
5404 var569 = varonce568;
5405 varonce568 = NULL;
5406 }
5407 {
5408 var578 = nitc__abstract_compiler___MClassType___MType__ctype(var_mtype);
5409 }
5410 ((struct instance_core__NativeArray*)var569)->values[0]=var578;
5411 {
5412 var579 = ((val*(*)(val* self))(var569->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var569); /* native_to_s on <var569:NativeArray[String]>*/
5413 }
5414 varonce568 = var569;
5415 {
5416 nitc___nitc__CodeWriter___add_decl(var565, var579); /* Direct call abstract_compiler$CodeWriter$add_decl on <var565:CodeWriter>*/
5417 }
5418 {
5419 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
5420 var582 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
5421 if (unlikely(var582 == NULL)) {
5422 if(catchStack.cursor >= 0){
5423 longjmp(catchStack.envs[catchStack.cursor], 1);
5424 }
5425 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
5426 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
5427 fatal_exit(1);
5428 }
5429 var580 = var582;
5430 RET_LABEL581:(void)0;
5431 }
5432 }
5433 if (likely(varonce583!=NULL)) {
5434 var584 = varonce583;
5435 } else {
5436 var585 = "};";
5437 var587 = (val*)(2l<<2|1);
5438 var588 = (val*)(2l<<2|1);
5439 var589 = (val*)((long)(0)<<2|3);
5440 var590 = (val*)((long)(0)<<2|3);
5441 var586 = core__flat___CString___to_s_unsafe(var585, var587, var588, var589, var590);
5442 var584 = var586;
5443 varonce583 = var584;
5444 }
5445 {
5446 nitc___nitc__CodeWriter___add_decl(var580, var584); /* Direct call abstract_compiler$CodeWriter$add_decl on <var580:CodeWriter>*/
5447 }
5448 if (unlikely(varonce591==NULL)) {
5449 var592 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
5450 if (likely(varonce593!=NULL)) {
5451 var594 = varonce593;
5452 } else {
5453 var595 = "BOX_";
5454 var597 = (val*)(4l<<2|1);
5455 var598 = (val*)(4l<<2|1);
5456 var599 = (val*)((long)(0)<<2|3);
5457 var600 = (val*)((long)(0)<<2|3);
5458 var596 = core__flat___CString___to_s_unsafe(var595, var597, var598, var599, var600);
5459 var594 = var596;
5460 varonce593 = var594;
5461 }
5462 ((struct instance_core__NativeArray*)var592)->values[0]=var594;
5463 } else {
5464 var592 = varonce591;
5465 varonce591 = NULL;
5466 }
5467 ((struct instance_core__NativeArray*)var592)->values[1]=var_c_name;
5468 {
5469 var601 = ((val*(*)(val* self))(var592->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var592); /* native_to_s on <var592:NativeArray[String]>*/
5470 }
5471 varonce591 = var592;
5472 if (unlikely(varonce602==NULL)) {
5473 var603 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
5474 if (likely(varonce604!=NULL)) {
5475 var605 = varonce604;
5476 } else {
5477 var606 = "val* BOX_";
5478 var608 = (val*)(9l<<2|1);
5479 var609 = (val*)(9l<<2|1);
5480 var610 = (val*)((long)(0)<<2|3);
5481 var611 = (val*)((long)(0)<<2|3);
5482 var607 = core__flat___CString___to_s_unsafe(var606, var608, var609, var610, var611);
5483 var605 = var607;
5484 varonce604 = var605;
5485 }
5486 ((struct instance_core__NativeArray*)var603)->values[0]=var605;
5487 if (likely(varonce612!=NULL)) {
5488 var613 = varonce612;
5489 } else {
5490 var614 = "(";
5491 var616 = (val*)(1l<<2|1);
5492 var617 = (val*)(1l<<2|1);
5493 var618 = (val*)((long)(0)<<2|3);
5494 var619 = (val*)((long)(0)<<2|3);
5495 var615 = core__flat___CString___to_s_unsafe(var614, var616, var617, var618, var619);
5496 var613 = var615;
5497 varonce612 = var613;
5498 }
5499 ((struct instance_core__NativeArray*)var603)->values[2]=var613;
5500 if (likely(varonce620!=NULL)) {
5501 var621 = varonce620;
5502 } else {
5503 var622 = ");";
5504 var624 = (val*)(2l<<2|1);
5505 var625 = (val*)(2l<<2|1);
5506 var626 = (val*)((long)(0)<<2|3);
5507 var627 = (val*)((long)(0)<<2|3);
5508 var623 = core__flat___CString___to_s_unsafe(var622, var624, var625, var626, var627);
5509 var621 = var623;
5510 varonce620 = var621;
5511 }
5512 ((struct instance_core__NativeArray*)var603)->values[4]=var621;
5513 } else {
5514 var603 = varonce602;
5515 varonce602 = NULL;
5516 }
5517 ((struct instance_core__NativeArray*)var603)->values[1]=var_c_name;
5518 {
5519 var628 = nitc__abstract_compiler___MClassType___MType__ctype_extern(var_mtype);
5520 }
5521 ((struct instance_core__NativeArray*)var603)->values[3]=var628;
5522 {
5523 var629 = ((val*(*)(val* self))(var603->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var603); /* native_to_s on <var603:NativeArray[String]>*/
5524 }
5525 varonce602 = var603;
5526 {
5527 nitc___nitc__AbstractCompiler___provide_declaration(self, var601, var629); /* Direct call abstract_compiler$AbstractCompiler$provide_declaration on <self:SeparateErasureCompiler>*/
5528 }
5529 if (unlikely(varonce630==NULL)) {
5530 var631 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
5531 if (likely(varonce632!=NULL)) {
5532 var633 = varonce632;
5533 } else {
5534 var634 = "/* allocate ";
5535 var636 = (val*)(12l<<2|1);
5536 var637 = (val*)(12l<<2|1);
5537 var638 = (val*)((long)(0)<<2|3);
5538 var639 = (val*)((long)(0)<<2|3);
5539 var635 = core__flat___CString___to_s_unsafe(var634, var636, var637, var638, var639);
5540 var633 = var635;
5541 varonce632 = var633;
5542 }
5543 ((struct instance_core__NativeArray*)var631)->values[0]=var633;
5544 if (likely(varonce640!=NULL)) {
5545 var641 = varonce640;
5546 } else {
5547 var642 = " */";
5548 var644 = (val*)(3l<<2|1);
5549 var645 = (val*)(3l<<2|1);
5550 var646 = (val*)((long)(0)<<2|3);
5551 var647 = (val*)((long)(0)<<2|3);
5552 var643 = core__flat___CString___to_s_unsafe(var642, var644, var645, var646, var647);
5553 var641 = var643;
5554 varonce640 = var641;
5555 }
5556 ((struct instance_core__NativeArray*)var631)->values[2]=var641;
5557 } else {
5558 var631 = varonce630;
5559 varonce630 = NULL;
5560 }
5561 {
5562 var648 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MClassType>*/
5563 }
5564 ((struct instance_core__NativeArray*)var631)->values[1]=var648;
5565 {
5566 var649 = ((val*(*)(val* self))(var631->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var631); /* native_to_s on <var631:NativeArray[String]>*/
5567 }
5568 varonce630 = var631;
5569 {
5570 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var649); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
5571 }
5572 if (unlikely(varonce650==NULL)) {
5573 var651 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
5574 if (likely(varonce652!=NULL)) {
5575 var653 = varonce652;
5576 } else {
5577 var654 = "val* BOX_";
5578 var656 = (val*)(9l<<2|1);
5579 var657 = (val*)(9l<<2|1);
5580 var658 = (val*)((long)(0)<<2|3);
5581 var659 = (val*)((long)(0)<<2|3);
5582 var655 = core__flat___CString___to_s_unsafe(var654, var656, var657, var658, var659);
5583 var653 = var655;
5584 varonce652 = var653;
5585 }
5586 ((struct instance_core__NativeArray*)var651)->values[0]=var653;
5587 if (likely(varonce660!=NULL)) {
5588 var661 = varonce660;
5589 } else {
5590 var662 = "(";
5591 var664 = (val*)(1l<<2|1);
5592 var665 = (val*)(1l<<2|1);
5593 var666 = (val*)((long)(0)<<2|3);
5594 var667 = (val*)((long)(0)<<2|3);
5595 var663 = core__flat___CString___to_s_unsafe(var662, var664, var665, var666, var667);
5596 var661 = var663;
5597 varonce660 = var661;
5598 }
5599 ((struct instance_core__NativeArray*)var651)->values[2]=var661;
5600 if (likely(varonce668!=NULL)) {
5601 var669 = varonce668;
5602 } else {
5603 var670 = " value) {";
5604 var672 = (val*)(9l<<2|1);
5605 var673 = (val*)(9l<<2|1);
5606 var674 = (val*)((long)(0)<<2|3);
5607 var675 = (val*)((long)(0)<<2|3);
5608 var671 = core__flat___CString___to_s_unsafe(var670, var672, var673, var674, var675);
5609 var669 = var671;
5610 varonce668 = var669;
5611 }
5612 ((struct instance_core__NativeArray*)var651)->values[4]=var669;
5613 } else {
5614 var651 = varonce650;
5615 varonce650 = NULL;
5616 }
5617 {
5618 var676 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MClassType>*/
5619 }
5620 ((struct instance_core__NativeArray*)var651)->values[1]=var676;
5621 {
5622 var677 = nitc__abstract_compiler___MClassType___MType__ctype_extern(var_mtype);
5623 }
5624 ((struct instance_core__NativeArray*)var651)->values[3]=var677;
5625 {
5626 var678 = ((val*(*)(val* self))(var651->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var651); /* native_to_s on <var651:NativeArray[String]>*/
5627 }
5628 varonce650 = var651;
5629 {
5630 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var678); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
5631 }
5632 if (unlikely(varonce679==NULL)) {
5633 var680 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
5634 if (likely(varonce681!=NULL)) {
5635 var682 = varonce681;
5636 } else {
5637 var683 = "struct instance_";
5638 var685 = (val*)(16l<<2|1);
5639 var686 = (val*)(16l<<2|1);
5640 var687 = (val*)((long)(0)<<2|3);
5641 var688 = (val*)((long)(0)<<2|3);
5642 var684 = core__flat___CString___to_s_unsafe(var683, var685, var686, var687, var688);
5643 var682 = var684;
5644 varonce681 = var682;
5645 }
5646 ((struct instance_core__NativeArray*)var680)->values[0]=var682;
5647 if (likely(varonce689!=NULL)) {
5648 var690 = varonce689;
5649 } else {
5650 var691 = "*res = nit_alloc(sizeof(struct instance_";
5651 var693 = (val*)(40l<<2|1);
5652 var694 = (val*)(40l<<2|1);
5653 var695 = (val*)((long)(0)<<2|3);
5654 var696 = (val*)((long)(0)<<2|3);
5655 var692 = core__flat___CString___to_s_unsafe(var691, var693, var694, var695, var696);
5656 var690 = var692;
5657 varonce689 = var690;
5658 }
5659 ((struct instance_core__NativeArray*)var680)->values[2]=var690;
5660 if (likely(varonce697!=NULL)) {
5661 var698 = varonce697;
5662 } else {
5663 var699 = "));";
5664 var701 = (val*)(3l<<2|1);
5665 var702 = (val*)(3l<<2|1);
5666 var703 = (val*)((long)(0)<<2|3);
5667 var704 = (val*)((long)(0)<<2|3);
5668 var700 = core__flat___CString___to_s_unsafe(var699, var701, var702, var703, var704);
5669 var698 = var700;
5670 varonce697 = var698;
5671 }
5672 ((struct instance_core__NativeArray*)var680)->values[4]=var698;
5673 } else {
5674 var680 = varonce679;
5675 varonce679 = NULL;
5676 }
5677 ((struct instance_core__NativeArray*)var680)->values[1]=var_c_name;
5678 ((struct instance_core__NativeArray*)var680)->values[3]=var_c_name;
5679 {
5680 var705 = ((val*(*)(val* self))(var680->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var680); /* native_to_s on <var680:NativeArray[String]>*/
5681 }
5682 varonce679 = var680;
5683 {
5684 nitc___nitc__AbstractCompilerVisitor___add(var_v, var705); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
5685 }
5686 if (unlikely(varonce706==NULL)) {
5687 var707 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
5688 if (likely(varonce708!=NULL)) {
5689 var709 = varonce708;
5690 } else {
5691 var710 = "class_";
5692 var712 = (val*)(6l<<2|1);
5693 var713 = (val*)(6l<<2|1);
5694 var714 = (val*)((long)(0)<<2|3);
5695 var715 = (val*)((long)(0)<<2|3);
5696 var711 = core__flat___CString___to_s_unsafe(var710, var712, var713, var714, var715);
5697 var709 = var711;
5698 varonce708 = var709;
5699 }
5700 ((struct instance_core__NativeArray*)var707)->values[0]=var709;
5701 } else {
5702 var707 = varonce706;
5703 varonce706 = NULL;
5704 }
5705 ((struct instance_core__NativeArray*)var707)->values[1]=var_c_name;
5706 {
5707 var716 = ((val*(*)(val* self))(var707->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var707); /* native_to_s on <var707:NativeArray[String]>*/
5708 }
5709 varonce706 = var707;
5710 {
5711 nitc___nitc__AbstractCompilerVisitor___require_declaration(var_v, var716); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <var_v:SeparateCompilerVisitor>*/
5712 }
5713 if (unlikely(varonce717==NULL)) {
5714 var718 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
5715 if (likely(varonce719!=NULL)) {
5716 var720 = varonce719;
5717 } else {
5718 var721 = "res->class = &class_";
5719 var723 = (val*)(20l<<2|1);
5720 var724 = (val*)(20l<<2|1);
5721 var725 = (val*)((long)(0)<<2|3);
5722 var726 = (val*)((long)(0)<<2|3);
5723 var722 = core__flat___CString___to_s_unsafe(var721, var723, var724, var725, var726);
5724 var720 = var722;
5725 varonce719 = var720;
5726 }
5727 ((struct instance_core__NativeArray*)var718)->values[0]=var720;
5728 if (likely(varonce727!=NULL)) {
5729 var728 = varonce727;
5730 } else {
5731 var729 = ";";
5732 var731 = (val*)(1l<<2|1);
5733 var732 = (val*)(1l<<2|1);
5734 var733 = (val*)((long)(0)<<2|3);
5735 var734 = (val*)((long)(0)<<2|3);
5736 var730 = core__flat___CString___to_s_unsafe(var729, var731, var732, var733, var734);
5737 var728 = var730;
5738 varonce727 = var728;
5739 }
5740 ((struct instance_core__NativeArray*)var718)->values[2]=var728;
5741 } else {
5742 var718 = varonce717;
5743 varonce717 = NULL;
5744 }
5745 ((struct instance_core__NativeArray*)var718)->values[1]=var_c_name;
5746 {
5747 var735 = ((val*(*)(val* self))(var718->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var718); /* native_to_s on <var718:NativeArray[String]>*/
5748 }
5749 varonce717 = var718;
5750 {
5751 nitc___nitc__AbstractCompilerVisitor___add(var_v, var735); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
5752 }
5753 if (likely(varonce736!=NULL)) {
5754 var737 = varonce736;
5755 } else {
5756 var738 = "res->value = value;";
5757 var740 = (val*)(19l<<2|1);
5758 var741 = (val*)(19l<<2|1);
5759 var742 = (val*)((long)(0)<<2|3);
5760 var743 = (val*)((long)(0)<<2|3);
5761 var739 = core__flat___CString___to_s_unsafe(var738, var740, var741, var742, var743);
5762 var737 = var739;
5763 varonce736 = var737;
5764 }
5765 {
5766 nitc___nitc__AbstractCompilerVisitor___add(var_v, var737); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
5767 }
5768 if (likely(varonce744!=NULL)) {
5769 var745 = varonce744;
5770 } else {
5771 var746 = "return (val*)res;";
5772 var748 = (val*)(17l<<2|1);
5773 var749 = (val*)(17l<<2|1);
5774 var750 = (val*)((long)(0)<<2|3);
5775 var751 = (val*)((long)(0)<<2|3);
5776 var747 = core__flat___CString___to_s_unsafe(var746, var748, var749, var750, var751);
5777 var745 = var747;
5778 varonce744 = var745;
5779 }
5780 {
5781 nitc___nitc__AbstractCompilerVisitor___add(var_v, var745); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
5782 }
5783 if (likely(varonce752!=NULL)) {
5784 var753 = varonce752;
5785 } else {
5786 var754 = "}";
5787 var756 = (val*)(1l<<2|1);
5788 var757 = (val*)(1l<<2|1);
5789 var758 = (val*)((long)(0)<<2|3);
5790 var759 = (val*)((long)(0)<<2|3);
5791 var755 = core__flat___CString___to_s_unsafe(var754, var756, var757, var758, var759);
5792 var753 = var755;
5793 varonce752 = var753;
5794 }
5795 {
5796 nitc___nitc__AbstractCompilerVisitor___add(var_v, var753); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
5797 }
5798 {
5799 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MClassType> */
5800 var762 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
5801 if (unlikely(var762 == NULL)) {
5802 if(catchStack.cursor >= 0){
5803 longjmp(catchStack.envs[catchStack.cursor], 1);
5804 }
5805 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5806 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
5807 fatal_exit(1);
5808 }
5809 var760 = var762;
5810 RET_LABEL761:(void)0;
5811 }
5812 }
5813 {
5814 { /* Inline model$MClass$name (var760) on <var760:MClass> */
5815 var765 = var760->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var760:MClass> */
5816 if (unlikely(var765 == NULL)) {
5817 if(catchStack.cursor >= 0){
5818 longjmp(catchStack.envs[catchStack.cursor], 1);
5819 }
5820 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5821 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 396);
5822 fatal_exit(1);
5823 }
5824 var763 = var765;
5825 RET_LABEL764:(void)0;
5826 }
5827 }
5828 if (likely(varonce766!=NULL)) {
5829 var767 = varonce766;
5830 } else {
5831 var768 = "Pointer";
5832 var770 = (val*)(7l<<2|1);
5833 var771 = (val*)(7l<<2|1);
5834 var772 = (val*)((long)(0)<<2|3);
5835 var773 = (val*)((long)(0)<<2|3);
5836 var769 = core__flat___CString___to_s_unsafe(var768, var770, var771, var772, var773);
5837 var767 = var769;
5838 varonce766 = var767;
5839 }
5840 {
5841 { /* Inline kernel$Object$!= (var763,var767) on <var763:String> */
5842 var_other = var767;
5843 {
5844 var776 = ((short int(*)(val* self, val* p0))(var763->class->vft[COLOR_core__kernel__Object___61d_61d]))(var763, var_other); /* == on <var763:String>*/
5845 }
5846 var777 = !var776;
5847 var774 = var777;
5848 goto RET_LABEL775;
5849 RET_LABEL775:(void)0;
5850 }
5851 }
5852 if (var774){
5853 goto RET_LABEL;
5854 } else {
5855 }
5856 {
5857 var778 = nitc___nitc__SeparateErasureCompiler___nitc__abstract_compiler__AbstractCompiler__new_visitor(self);
5858 }
5859 var_v = var778;
5860 if (unlikely(varonce779==NULL)) {
5861 var780 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
5862 if (likely(varonce781!=NULL)) {
5863 var782 = varonce781;
5864 } else {
5865 var783 = "NEW_";
5866 var785 = (val*)(4l<<2|1);
5867 var786 = (val*)(4l<<2|1);
5868 var787 = (val*)((long)(0)<<2|3);
5869 var788 = (val*)((long)(0)<<2|3);
5870 var784 = core__flat___CString___to_s_unsafe(var783, var785, var786, var787, var788);
5871 var782 = var784;
5872 varonce781 = var782;
5873 }
5874 ((struct instance_core__NativeArray*)var780)->values[0]=var782;
5875 } else {
5876 var780 = varonce779;
5877 varonce779 = NULL;
5878 }
5879 ((struct instance_core__NativeArray*)var780)->values[1]=var_c_name;
5880 {
5881 var789 = ((val*(*)(val* self))(var780->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var780); /* native_to_s on <var780:NativeArray[String]>*/
5882 }
5883 varonce779 = var780;
5884 if (unlikely(varonce790==NULL)) {
5885 var791 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
5886 if (likely(varonce792!=NULL)) {
5887 var793 = varonce792;
5888 } else {
5889 var794 = " NEW_";
5890 var796 = (val*)(5l<<2|1);
5891 var797 = (val*)(5l<<2|1);
5892 var798 = (val*)((long)(0)<<2|3);
5893 var799 = (val*)((long)(0)<<2|3);
5894 var795 = core__flat___CString___to_s_unsafe(var794, var796, var797, var798, var799);
5895 var793 = var795;
5896 varonce792 = var793;
5897 }
5898 ((struct instance_core__NativeArray*)var791)->values[1]=var793;
5899 if (likely(varonce800!=NULL)) {
5900 var801 = varonce800;
5901 } else {
5902 var802 = "();";
5903 var804 = (val*)(3l<<2|1);
5904 var805 = (val*)(3l<<2|1);
5905 var806 = (val*)((long)(0)<<2|3);
5906 var807 = (val*)((long)(0)<<2|3);
5907 var803 = core__flat___CString___to_s_unsafe(var802, var804, var805, var806, var807);
5908 var801 = var803;
5909 varonce800 = var801;
5910 }
5911 ((struct instance_core__NativeArray*)var791)->values[3]=var801;
5912 } else {
5913 var791 = varonce790;
5914 varonce790 = NULL;
5915 }
5916 {
5917 var808 = nitc__abstract_compiler___MClassType___MType__ctype(var_mtype);
5918 }
5919 ((struct instance_core__NativeArray*)var791)->values[0]=var808;
5920 ((struct instance_core__NativeArray*)var791)->values[2]=var_c_name;
5921 {
5922 var809 = ((val*(*)(val* self))(var791->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var791); /* native_to_s on <var791:NativeArray[String]>*/
5923 }
5924 varonce790 = var791;
5925 {
5926 nitc___nitc__AbstractCompiler___provide_declaration(self, var789, var809); /* Direct call abstract_compiler$AbstractCompiler$provide_declaration on <self:SeparateErasureCompiler>*/
5927 }
5928 if (unlikely(varonce810==NULL)) {
5929 var811 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
5930 if (likely(varonce812!=NULL)) {
5931 var813 = varonce812;
5932 } else {
5933 var814 = "/* allocate ";
5934 var816 = (val*)(12l<<2|1);
5935 var817 = (val*)(12l<<2|1);
5936 var818 = (val*)((long)(0)<<2|3);
5937 var819 = (val*)((long)(0)<<2|3);
5938 var815 = core__flat___CString___to_s_unsafe(var814, var816, var817, var818, var819);
5939 var813 = var815;
5940 varonce812 = var813;
5941 }
5942 ((struct instance_core__NativeArray*)var811)->values[0]=var813;
5943 if (likely(varonce820!=NULL)) {
5944 var821 = varonce820;
5945 } else {
5946 var822 = " */";
5947 var824 = (val*)(3l<<2|1);
5948 var825 = (val*)(3l<<2|1);
5949 var826 = (val*)((long)(0)<<2|3);
5950 var827 = (val*)((long)(0)<<2|3);
5951 var823 = core__flat___CString___to_s_unsafe(var822, var824, var825, var826, var827);
5952 var821 = var823;
5953 varonce820 = var821;
5954 }
5955 ((struct instance_core__NativeArray*)var811)->values[2]=var821;
5956 } else {
5957 var811 = varonce810;
5958 varonce810 = NULL;
5959 }
5960 {
5961 var828 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MClassType>*/
5962 }
5963 ((struct instance_core__NativeArray*)var811)->values[1]=var828;
5964 {
5965 var829 = ((val*(*)(val* self))(var811->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var811); /* native_to_s on <var811:NativeArray[String]>*/
5966 }
5967 varonce810 = var811;
5968 {
5969 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var829); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
5970 }
5971 if (unlikely(varonce830==NULL)) {
5972 var831 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
5973 if (likely(varonce832!=NULL)) {
5974 var833 = varonce832;
5975 } else {
5976 var834 = " NEW_";
5977 var836 = (val*)(5l<<2|1);
5978 var837 = (val*)(5l<<2|1);
5979 var838 = (val*)((long)(0)<<2|3);
5980 var839 = (val*)((long)(0)<<2|3);
5981 var835 = core__flat___CString___to_s_unsafe(var834, var836, var837, var838, var839);
5982 var833 = var835;
5983 varonce832 = var833;
5984 }
5985 ((struct instance_core__NativeArray*)var831)->values[1]=var833;
5986 if (likely(varonce840!=NULL)) {
5987 var841 = varonce840;
5988 } else {
5989 var842 = "() {";
5990 var844 = (val*)(4l<<2|1);
5991 var845 = (val*)(4l<<2|1);
5992 var846 = (val*)((long)(0)<<2|3);
5993 var847 = (val*)((long)(0)<<2|3);
5994 var843 = core__flat___CString___to_s_unsafe(var842, var844, var845, var846, var847);
5995 var841 = var843;
5996 varonce840 = var841;
5997 }
5998 ((struct instance_core__NativeArray*)var831)->values[3]=var841;
5999 } else {
6000 var831 = varonce830;
6001 varonce830 = NULL;
6002 }
6003 {
6004 var848 = nitc__abstract_compiler___MClassType___MType__ctype(var_mtype);
6005 }
6006 ((struct instance_core__NativeArray*)var831)->values[0]=var848;
6007 ((struct instance_core__NativeArray*)var831)->values[2]=var_c_name;
6008 {
6009 var849 = ((val*(*)(val* self))(var831->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var831); /* native_to_s on <var831:NativeArray[String]>*/
6010 }
6011 varonce830 = var831;
6012 {
6013 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var849); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
6014 }
6015 if (var_is_dead){
6016 if (unlikely(varonce850==NULL)) {
6017 var851 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
6018 if (likely(varonce852!=NULL)) {
6019 var853 = varonce852;
6020 } else {
6021 var854 = " is DEAD";
6022 var856 = (val*)(8l<<2|1);
6023 var857 = (val*)(8l<<2|1);
6024 var858 = (val*)((long)(0)<<2|3);
6025 var859 = (val*)((long)(0)<<2|3);
6026 var855 = core__flat___CString___to_s_unsafe(var854, var856, var857, var858, var859);
6027 var853 = var855;
6028 varonce852 = var853;
6029 }
6030 ((struct instance_core__NativeArray*)var851)->values[1]=var853;
6031 } else {
6032 var851 = varonce850;
6033 varonce850 = NULL;
6034 }
6035 {
6036 var860 = ((val*(*)(val* self))(var_mclass->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mclass); /* to_s on <var_mclass:MClass>*/
6037 }
6038 ((struct instance_core__NativeArray*)var851)->values[0]=var860;
6039 {
6040 var861 = ((val*(*)(val* self))(var851->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var851); /* native_to_s on <var851:NativeArray[String]>*/
6041 }
6042 varonce850 = var851;
6043 {
6044 nitc___nitc__AbstractCompilerVisitor___add_abort(var_v, var861); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_abort on <var_v:SeparateCompilerVisitor>*/
6045 }
6046 } else {
6047 if (likely(varonce862!=NULL)) {
6048 var863 = varonce862;
6049 } else {
6050 var864 = "self";
6051 var866 = (val*)(4l<<2|1);
6052 var867 = (val*)(4l<<2|1);
6053 var868 = (val*)((long)(0)<<2|3);
6054 var869 = (val*)((long)(0)<<2|3);
6055 var865 = core__flat___CString___to_s_unsafe(var864, var866, var867, var868, var869);
6056 var863 = var865;
6057 varonce862 = var863;
6058 }
6059 {
6060 var870 = nitc___nitc__AbstractCompilerVisitor___new_named_var(var_v, var_mtype, var863);
6061 }
6062 var_res = var870;
6063 {
6064 { /* Inline abstract_compiler$RuntimeVariable$is_exact= (var_res,1) on <var_res:RuntimeVariable> */
6065 var_res->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___is_exact].s = 1; /* _is_exact on <var_res:RuntimeVariable> */
6066 RET_LABEL871:(void)0;
6067 }
6068 }
6069 if (unlikely(varonce872==NULL)) {
6070 var873 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
6071 if (likely(varonce874!=NULL)) {
6072 var875 = varonce874;
6073 } else {
6074 var876 = " = nit_alloc(sizeof(struct instance_";
6075 var878 = (val*)(36l<<2|1);
6076 var879 = (val*)(36l<<2|1);
6077 var880 = (val*)((long)(0)<<2|3);
6078 var881 = (val*)((long)(0)<<2|3);
6079 var877 = core__flat___CString___to_s_unsafe(var876, var878, var879, var880, var881);
6080 var875 = var877;
6081 varonce874 = var875;
6082 }
6083 ((struct instance_core__NativeArray*)var873)->values[1]=var875;
6084 if (likely(varonce882!=NULL)) {
6085 var883 = varonce882;
6086 } else {
6087 var884 = "));";
6088 var886 = (val*)(3l<<2|1);
6089 var887 = (val*)(3l<<2|1);
6090 var888 = (val*)((long)(0)<<2|3);
6091 var889 = (val*)((long)(0)<<2|3);
6092 var885 = core__flat___CString___to_s_unsafe(var884, var886, var887, var888, var889);
6093 var883 = var885;
6094 varonce882 = var883;
6095 }
6096 ((struct instance_core__NativeArray*)var873)->values[3]=var883;
6097 } else {
6098 var873 = varonce872;
6099 varonce872 = NULL;
6100 }
6101 {
6102 var890 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
6103 }
6104 ((struct instance_core__NativeArray*)var873)->values[0]=var890;
6105 {
6106 var891 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MClassType>*/
6107 }
6108 ((struct instance_core__NativeArray*)var873)->values[2]=var891;
6109 {
6110 var892 = ((val*(*)(val* self))(var873->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var873); /* native_to_s on <var873:NativeArray[String]>*/
6111 }
6112 varonce872 = var873;
6113 {
6114 nitc___nitc__AbstractCompilerVisitor___add(var_v, var892); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
6115 }
6116 if (unlikely(varonce893==NULL)) {
6117 var894 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
6118 if (likely(varonce895!=NULL)) {
6119 var896 = varonce895;
6120 } else {
6121 var897 = "class_";
6122 var899 = (val*)(6l<<2|1);
6123 var900 = (val*)(6l<<2|1);
6124 var901 = (val*)((long)(0)<<2|3);
6125 var902 = (val*)((long)(0)<<2|3);
6126 var898 = core__flat___CString___to_s_unsafe(var897, var899, var900, var901, var902);
6127 var896 = var898;
6128 varonce895 = var896;
6129 }
6130 ((struct instance_core__NativeArray*)var894)->values[0]=var896;
6131 } else {
6132 var894 = varonce893;
6133 varonce893 = NULL;
6134 }
6135 ((struct instance_core__NativeArray*)var894)->values[1]=var_c_name;
6136 {
6137 var903 = ((val*(*)(val* self))(var894->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var894); /* native_to_s on <var894:NativeArray[String]>*/
6138 }
6139 varonce893 = var894;
6140 {
6141 nitc___nitc__AbstractCompilerVisitor___require_declaration(var_v, var903); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <var_v:SeparateCompilerVisitor>*/
6142 }
6143 if (unlikely(varonce904==NULL)) {
6144 var905 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
6145 if (likely(varonce906!=NULL)) {
6146 var907 = varonce906;
6147 } else {
6148 var908 = "->class = &class_";
6149 var910 = (val*)(17l<<2|1);
6150 var911 = (val*)(17l<<2|1);
6151 var912 = (val*)((long)(0)<<2|3);
6152 var913 = (val*)((long)(0)<<2|3);
6153 var909 = core__flat___CString___to_s_unsafe(var908, var910, var911, var912, var913);
6154 var907 = var909;
6155 varonce906 = var907;
6156 }
6157 ((struct instance_core__NativeArray*)var905)->values[1]=var907;
6158 if (likely(varonce914!=NULL)) {
6159 var915 = varonce914;
6160 } else {
6161 var916 = ";";
6162 var918 = (val*)(1l<<2|1);
6163 var919 = (val*)(1l<<2|1);
6164 var920 = (val*)((long)(0)<<2|3);
6165 var921 = (val*)((long)(0)<<2|3);
6166 var917 = core__flat___CString___to_s_unsafe(var916, var918, var919, var920, var921);
6167 var915 = var917;
6168 varonce914 = var915;
6169 }
6170 ((struct instance_core__NativeArray*)var905)->values[3]=var915;
6171 } else {
6172 var905 = varonce904;
6173 varonce904 = NULL;
6174 }
6175 {
6176 var922 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
6177 }
6178 ((struct instance_core__NativeArray*)var905)->values[0]=var922;
6179 ((struct instance_core__NativeArray*)var905)->values[2]=var_c_name;
6180 {
6181 var923 = ((val*(*)(val* self))(var905->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var905); /* native_to_s on <var905:NativeArray[String]>*/
6182 }
6183 varonce904 = var905;
6184 {
6185 nitc___nitc__AbstractCompilerVisitor___add(var_v, var923); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
6186 }
6187 if (unlikely(varonce924==NULL)) {
6188 var925 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
6189 if (likely(varonce926!=NULL)) {
6190 var927 = varonce926;
6191 } else {
6192 var928 = "((struct instance_";
6193 var930 = (val*)(18l<<2|1);
6194 var931 = (val*)(18l<<2|1);
6195 var932 = (val*)((long)(0)<<2|3);
6196 var933 = (val*)((long)(0)<<2|3);
6197 var929 = core__flat___CString___to_s_unsafe(var928, var930, var931, var932, var933);
6198 var927 = var929;
6199 varonce926 = var927;
6200 }
6201 ((struct instance_core__NativeArray*)var925)->values[0]=var927;
6202 if (likely(varonce934!=NULL)) {
6203 var935 = varonce934;
6204 } else {
6205 var936 = "*)";
6206 var938 = (val*)(2l<<2|1);
6207 var939 = (val*)(2l<<2|1);
6208 var940 = (val*)((long)(0)<<2|3);
6209 var941 = (val*)((long)(0)<<2|3);
6210 var937 = core__flat___CString___to_s_unsafe(var936, var938, var939, var940, var941);
6211 var935 = var937;
6212 varonce934 = var935;
6213 }
6214 ((struct instance_core__NativeArray*)var925)->values[2]=var935;
6215 if (likely(varonce942!=NULL)) {
6216 var943 = varonce942;
6217 } else {
6218 var944 = ")->value = NULL;";
6219 var946 = (val*)(16l<<2|1);
6220 var947 = (val*)(16l<<2|1);
6221 var948 = (val*)((long)(0)<<2|3);
6222 var949 = (val*)((long)(0)<<2|3);
6223 var945 = core__flat___CString___to_s_unsafe(var944, var946, var947, var948, var949);
6224 var943 = var945;
6225 varonce942 = var943;
6226 }
6227 ((struct instance_core__NativeArray*)var925)->values[4]=var943;
6228 } else {
6229 var925 = varonce924;
6230 varonce924 = NULL;
6231 }
6232 {
6233 var950 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MClassType>*/
6234 }
6235 ((struct instance_core__NativeArray*)var925)->values[1]=var950;
6236 {
6237 var951 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
6238 }
6239 ((struct instance_core__NativeArray*)var925)->values[3]=var951;
6240 {
6241 var952 = ((val*(*)(val* self))(var925->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var925); /* native_to_s on <var925:NativeArray[String]>*/
6242 }
6243 varonce924 = var925;
6244 {
6245 nitc___nitc__AbstractCompilerVisitor___add(var_v, var952); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
6246 }
6247 if (unlikely(varonce953==NULL)) {
6248 var954 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
6249 if (likely(varonce955!=NULL)) {
6250 var956 = varonce955;
6251 } else {
6252 var957 = "return ";
6253 var959 = (val*)(7l<<2|1);
6254 var960 = (val*)(7l<<2|1);
6255 var961 = (val*)((long)(0)<<2|3);
6256 var962 = (val*)((long)(0)<<2|3);
6257 var958 = core__flat___CString___to_s_unsafe(var957, var959, var960, var961, var962);
6258 var956 = var958;
6259 varonce955 = var956;
6260 }
6261 ((struct instance_core__NativeArray*)var954)->values[0]=var956;
6262 if (likely(varonce963!=NULL)) {
6263 var964 = varonce963;
6264 } else {
6265 var965 = ";";
6266 var967 = (val*)(1l<<2|1);
6267 var968 = (val*)(1l<<2|1);
6268 var969 = (val*)((long)(0)<<2|3);
6269 var970 = (val*)((long)(0)<<2|3);
6270 var966 = core__flat___CString___to_s_unsafe(var965, var967, var968, var969, var970);
6271 var964 = var966;
6272 varonce963 = var964;
6273 }
6274 ((struct instance_core__NativeArray*)var954)->values[2]=var964;
6275 } else {
6276 var954 = varonce953;
6277 varonce953 = NULL;
6278 }
6279 {
6280 var971 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
6281 }
6282 ((struct instance_core__NativeArray*)var954)->values[1]=var971;
6283 {
6284 var972 = ((val*(*)(val* self))(var954->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var954); /* native_to_s on <var954:NativeArray[String]>*/
6285 }
6286 varonce953 = var954;
6287 {
6288 nitc___nitc__AbstractCompilerVisitor___add(var_v, var972); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
6289 }
6290 }
6291 if (likely(varonce973!=NULL)) {
6292 var974 = varonce973;
6293 } else {
6294 var975 = "}";
6295 var977 = (val*)(1l<<2|1);
6296 var978 = (val*)(1l<<2|1);
6297 var979 = (val*)((long)(0)<<2|3);
6298 var980 = (val*)((long)(0)<<2|3);
6299 var976 = core__flat___CString___to_s_unsafe(var975, var977, var978, var979, var980);
6300 var974 = var976;
6301 varonce973 = var974;
6302 }
6303 {
6304 nitc___nitc__AbstractCompilerVisitor___add(var_v, var974); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
6305 }
6306 goto RET_LABEL;
6307 } else {
6308 {
6309 { /* Inline model$MClass$name (var_mclass) on <var_mclass:MClass> */
6310 var983 = var_mclass->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var_mclass:MClass> */
6311 if (unlikely(var983 == NULL)) {
6312 if(catchStack.cursor >= 0){
6313 longjmp(catchStack.envs[catchStack.cursor], 1);
6314 }
6315 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
6316 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 396);
6317 fatal_exit(1);
6318 }
6319 var981 = var983;
6320 RET_LABEL982:(void)0;
6321 }
6322 }
6323 if (likely(varonce984!=NULL)) {
6324 var985 = varonce984;
6325 } else {
6326 var986 = "NativeArray";
6327 var988 = (val*)(11l<<2|1);
6328 var989 = (val*)(11l<<2|1);
6329 var990 = (val*)((long)(0)<<2|3);
6330 var991 = (val*)((long)(0)<<2|3);
6331 var987 = core__flat___CString___to_s_unsafe(var986, var988, var989, var990, var991);
6332 var985 = var987;
6333 varonce984 = var985;
6334 }
6335 {
6336 var992 = ((short int(*)(val* self, val* p0))(var981->class->vft[COLOR_core__kernel__Object___61d_61d]))(var981, var985); /* == on <var981:String>*/
6337 }
6338 if (var992){
6339 {
6340 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
6341 var995 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
6342 if (unlikely(var995 == NULL)) {
6343 if(catchStack.cursor >= 0){
6344 longjmp(catchStack.envs[catchStack.cursor], 1);
6345 }
6346 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
6347 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
6348 fatal_exit(1);
6349 }
6350 var993 = var995;
6351 RET_LABEL994:(void)0;
6352 }
6353 }
6354 if (unlikely(varonce996==NULL)) {
6355 var997 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
6356 if (likely(varonce998!=NULL)) {
6357 var999 = varonce998;
6358 } else {
6359 var1000 = "struct instance_";
6360 var1002 = (val*)(16l<<2|1);
6361 var1003 = (val*)(16l<<2|1);
6362 var1004 = (val*)((long)(0)<<2|3);
6363 var1005 = (val*)((long)(0)<<2|3);
6364 var1001 = core__flat___CString___to_s_unsafe(var1000, var1002, var1003, var1004, var1005);
6365 var999 = var1001;
6366 varonce998 = var999;
6367 }
6368 ((struct instance_core__NativeArray*)var997)->values[0]=var999;
6369 if (likely(varonce1006!=NULL)) {
6370 var1007 = varonce1006;
6371 } else {
6372 var1008 = " {";
6373 var1010 = (val*)(2l<<2|1);
6374 var1011 = (val*)(2l<<2|1);
6375 var1012 = (val*)((long)(0)<<2|3);
6376 var1013 = (val*)((long)(0)<<2|3);
6377 var1009 = core__flat___CString___to_s_unsafe(var1008, var1010, var1011, var1012, var1013);
6378 var1007 = var1009;
6379 varonce1006 = var1007;
6380 }
6381 ((struct instance_core__NativeArray*)var997)->values[2]=var1007;
6382 } else {
6383 var997 = varonce996;
6384 varonce996 = NULL;
6385 }
6386 ((struct instance_core__NativeArray*)var997)->values[1]=var_c_name;
6387 {
6388 var1014 = ((val*(*)(val* self))(var997->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var997); /* native_to_s on <var997:NativeArray[String]>*/
6389 }
6390 varonce996 = var997;
6391 {
6392 nitc___nitc__CodeWriter___add_decl(var993, var1014); /* Direct call abstract_compiler$CodeWriter$add_decl on <var993:CodeWriter>*/
6393 }
6394 {
6395 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
6396 var1017 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
6397 if (unlikely(var1017 == NULL)) {
6398 if(catchStack.cursor >= 0){
6399 longjmp(catchStack.envs[catchStack.cursor], 1);
6400 }
6401 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
6402 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
6403 fatal_exit(1);
6404 }
6405 var1015 = var1017;
6406 RET_LABEL1016:(void)0;
6407 }
6408 }
6409 if (likely(varonce1018!=NULL)) {
6410 var1019 = varonce1018;
6411 } else {
6412 var1020 = "const struct class *class;";
6413 var1022 = (val*)(26l<<2|1);
6414 var1023 = (val*)(26l<<2|1);
6415 var1024 = (val*)((long)(0)<<2|3);
6416 var1025 = (val*)((long)(0)<<2|3);
6417 var1021 = core__flat___CString___to_s_unsafe(var1020, var1022, var1023, var1024, var1025);
6418 var1019 = var1021;
6419 varonce1018 = var1019;
6420 }
6421 {
6422 nitc___nitc__CodeWriter___add_decl(var1015, var1019); /* Direct call abstract_compiler$CodeWriter$add_decl on <var1015:CodeWriter>*/
6423 }
6424 {
6425 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
6426 var1028 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
6427 if (unlikely(var1028 == NULL)) {
6428 if(catchStack.cursor >= 0){
6429 longjmp(catchStack.envs[catchStack.cursor], 1);
6430 }
6431 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
6432 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
6433 fatal_exit(1);
6434 }
6435 var1026 = var1028;
6436 RET_LABEL1027:(void)0;
6437 }
6438 }
6439 if (likely(varonce1029!=NULL)) {
6440 var1030 = varonce1029;
6441 } else {
6442 var1031 = "int length;";
6443 var1033 = (val*)(11l<<2|1);
6444 var1034 = (val*)(11l<<2|1);
6445 var1035 = (val*)((long)(0)<<2|3);
6446 var1036 = (val*)((long)(0)<<2|3);
6447 var1032 = core__flat___CString___to_s_unsafe(var1031, var1033, var1034, var1035, var1036);
6448 var1030 = var1032;
6449 varonce1029 = var1030;
6450 }
6451 {
6452 nitc___nitc__CodeWriter___add_decl(var1026, var1030); /* Direct call abstract_compiler$CodeWriter$add_decl on <var1026:CodeWriter>*/
6453 }
6454 {
6455 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
6456 var1039 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
6457 if (unlikely(var1039 == NULL)) {
6458 if(catchStack.cursor >= 0){
6459 longjmp(catchStack.envs[catchStack.cursor], 1);
6460 }
6461 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
6462 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
6463 fatal_exit(1);
6464 }
6465 var1037 = var1039;
6466 RET_LABEL1038:(void)0;
6467 }
6468 }
6469 if (likely(varonce1040!=NULL)) {
6470 var1041 = varonce1040;
6471 } else {
6472 var1042 = "val* values[];";
6473 var1044 = (val*)(14l<<2|1);
6474 var1045 = (val*)(14l<<2|1);
6475 var1046 = (val*)((long)(0)<<2|3);
6476 var1047 = (val*)((long)(0)<<2|3);
6477 var1043 = core__flat___CString___to_s_unsafe(var1042, var1044, var1045, var1046, var1047);
6478 var1041 = var1043;
6479 varonce1040 = var1041;
6480 }
6481 {
6482 nitc___nitc__CodeWriter___add_decl(var1037, var1041); /* Direct call abstract_compiler$CodeWriter$add_decl on <var1037:CodeWriter>*/
6483 }
6484 {
6485 { /* Inline abstract_compiler$AbstractCompiler$header (self) on <self:SeparateErasureCompiler> */
6486 var1050 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
6487 if (unlikely(var1050 == NULL)) {
6488 if(catchStack.cursor >= 0){
6489 longjmp(catchStack.envs[catchStack.cursor], 1);
6490 }
6491 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
6492 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
6493 fatal_exit(1);
6494 }
6495 var1048 = var1050;
6496 RET_LABEL1049:(void)0;
6497 }
6498 }
6499 if (likely(varonce1051!=NULL)) {
6500 var1052 = varonce1051;
6501 } else {
6502 var1053 = "};";
6503 var1055 = (val*)(2l<<2|1);
6504 var1056 = (val*)(2l<<2|1);
6505 var1057 = (val*)((long)(0)<<2|3);
6506 var1058 = (val*)((long)(0)<<2|3);
6507 var1054 = core__flat___CString___to_s_unsafe(var1053, var1055, var1056, var1057, var1058);
6508 var1052 = var1054;
6509 varonce1051 = var1052;
6510 }
6511 {
6512 nitc___nitc__CodeWriter___add_decl(var1048, var1052); /* Direct call abstract_compiler$CodeWriter$add_decl on <var1048:CodeWriter>*/
6513 }
6514 if (unlikely(varonce1059==NULL)) {
6515 var1060 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
6516 if (likely(varonce1061!=NULL)) {
6517 var1062 = varonce1061;
6518 } else {
6519 var1063 = "NEW_";
6520 var1065 = (val*)(4l<<2|1);
6521 var1066 = (val*)(4l<<2|1);
6522 var1067 = (val*)((long)(0)<<2|3);
6523 var1068 = (val*)((long)(0)<<2|3);
6524 var1064 = core__flat___CString___to_s_unsafe(var1063, var1065, var1066, var1067, var1068);
6525 var1062 = var1064;
6526 varonce1061 = var1062;
6527 }
6528 ((struct instance_core__NativeArray*)var1060)->values[0]=var1062;
6529 } else {
6530 var1060 = varonce1059;
6531 varonce1059 = NULL;
6532 }
6533 ((struct instance_core__NativeArray*)var1060)->values[1]=var_c_name;
6534 {
6535 var1069 = ((val*(*)(val* self))(var1060->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1060); /* native_to_s on <var1060:NativeArray[String]>*/
6536 }
6537 varonce1059 = var1060;
6538 if (unlikely(varonce1070==NULL)) {
6539 var1071 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
6540 if (likely(varonce1072!=NULL)) {
6541 var1073 = varonce1072;
6542 } else {
6543 var1074 = " NEW_";
6544 var1076 = (val*)(5l<<2|1);
6545 var1077 = (val*)(5l<<2|1);
6546 var1078 = (val*)((long)(0)<<2|3);
6547 var1079 = (val*)((long)(0)<<2|3);
6548 var1075 = core__flat___CString___to_s_unsafe(var1074, var1076, var1077, var1078, var1079);
6549 var1073 = var1075;
6550 varonce1072 = var1073;
6551 }
6552 ((struct instance_core__NativeArray*)var1071)->values[1]=var1073;
6553 if (likely(varonce1080!=NULL)) {
6554 var1081 = varonce1080;
6555 } else {
6556 var1082 = "(int length);";
6557 var1084 = (val*)(13l<<2|1);
6558 var1085 = (val*)(13l<<2|1);
6559 var1086 = (val*)((long)(0)<<2|3);
6560 var1087 = (val*)((long)(0)<<2|3);
6561 var1083 = core__flat___CString___to_s_unsafe(var1082, var1084, var1085, var1086, var1087);
6562 var1081 = var1083;
6563 varonce1080 = var1081;
6564 }
6565 ((struct instance_core__NativeArray*)var1071)->values[3]=var1081;
6566 } else {
6567 var1071 = varonce1070;
6568 varonce1070 = NULL;
6569 }
6570 {
6571 var1088 = nitc__abstract_compiler___MClassType___MType__ctype(var_mtype);
6572 }
6573 ((struct instance_core__NativeArray*)var1071)->values[0]=var1088;
6574 ((struct instance_core__NativeArray*)var1071)->values[2]=var_c_name;
6575 {
6576 var1089 = ((val*(*)(val* self))(var1071->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1071); /* native_to_s on <var1071:NativeArray[String]>*/
6577 }
6578 varonce1070 = var1071;
6579 {
6580 nitc___nitc__AbstractCompiler___provide_declaration(self, var1069, var1089); /* Direct call abstract_compiler$AbstractCompiler$provide_declaration on <self:SeparateErasureCompiler>*/
6581 }
6582 if (unlikely(varonce1090==NULL)) {
6583 var1091 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
6584 if (likely(varonce1092!=NULL)) {
6585 var1093 = varonce1092;
6586 } else {
6587 var1094 = "/* allocate ";
6588 var1096 = (val*)(12l<<2|1);
6589 var1097 = (val*)(12l<<2|1);
6590 var1098 = (val*)((long)(0)<<2|3);
6591 var1099 = (val*)((long)(0)<<2|3);
6592 var1095 = core__flat___CString___to_s_unsafe(var1094, var1096, var1097, var1098, var1099);
6593 var1093 = var1095;
6594 varonce1092 = var1093;
6595 }
6596 ((struct instance_core__NativeArray*)var1091)->values[0]=var1093;
6597 if (likely(varonce1100!=NULL)) {
6598 var1101 = varonce1100;
6599 } else {
6600 var1102 = " */";
6601 var1104 = (val*)(3l<<2|1);
6602 var1105 = (val*)(3l<<2|1);
6603 var1106 = (val*)((long)(0)<<2|3);
6604 var1107 = (val*)((long)(0)<<2|3);
6605 var1103 = core__flat___CString___to_s_unsafe(var1102, var1104, var1105, var1106, var1107);
6606 var1101 = var1103;
6607 varonce1100 = var1101;
6608 }
6609 ((struct instance_core__NativeArray*)var1091)->values[2]=var1101;
6610 } else {
6611 var1091 = varonce1090;
6612 varonce1090 = NULL;
6613 }
6614 {
6615 var1108 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MClassType>*/
6616 }
6617 ((struct instance_core__NativeArray*)var1091)->values[1]=var1108;
6618 {
6619 var1109 = ((val*(*)(val* self))(var1091->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1091); /* native_to_s on <var1091:NativeArray[String]>*/
6620 }
6621 varonce1090 = var1091;
6622 {
6623 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var1109); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
6624 }
6625 if (unlikely(varonce1110==NULL)) {
6626 var1111 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
6627 if (likely(varonce1112!=NULL)) {
6628 var1113 = varonce1112;
6629 } else {
6630 var1114 = " NEW_";
6631 var1116 = (val*)(5l<<2|1);
6632 var1117 = (val*)(5l<<2|1);
6633 var1118 = (val*)((long)(0)<<2|3);
6634 var1119 = (val*)((long)(0)<<2|3);
6635 var1115 = core__flat___CString___to_s_unsafe(var1114, var1116, var1117, var1118, var1119);
6636 var1113 = var1115;
6637 varonce1112 = var1113;
6638 }
6639 ((struct instance_core__NativeArray*)var1111)->values[1]=var1113;
6640 if (likely(varonce1120!=NULL)) {
6641 var1121 = varonce1120;
6642 } else {
6643 var1122 = "(int length) {";
6644 var1124 = (val*)(14l<<2|1);
6645 var1125 = (val*)(14l<<2|1);
6646 var1126 = (val*)((long)(0)<<2|3);
6647 var1127 = (val*)((long)(0)<<2|3);
6648 var1123 = core__flat___CString___to_s_unsafe(var1122, var1124, var1125, var1126, var1127);
6649 var1121 = var1123;
6650 varonce1120 = var1121;
6651 }
6652 ((struct instance_core__NativeArray*)var1111)->values[3]=var1121;
6653 } else {
6654 var1111 = varonce1110;
6655 varonce1110 = NULL;
6656 }
6657 {
6658 var1128 = nitc__abstract_compiler___MClassType___MType__ctype(var_mtype);
6659 }
6660 ((struct instance_core__NativeArray*)var1111)->values[0]=var1128;
6661 ((struct instance_core__NativeArray*)var1111)->values[2]=var_c_name;
6662 {
6663 var1129 = ((val*(*)(val* self))(var1111->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1111); /* native_to_s on <var1111:NativeArray[String]>*/
6664 }
6665 varonce1110 = var1111;
6666 {
6667 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var1129); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
6668 }
6669 if (likely(varonce1130!=NULL)) {
6670 var1131 = varonce1130;
6671 } else {
6672 var1132 = "self";
6673 var1134 = (val*)(4l<<2|1);
6674 var1135 = (val*)(4l<<2|1);
6675 var1136 = (val*)((long)(0)<<2|3);
6676 var1137 = (val*)((long)(0)<<2|3);
6677 var1133 = core__flat___CString___to_s_unsafe(var1132, var1134, var1135, var1136, var1137);
6678 var1131 = var1133;
6679 varonce1130 = var1131;
6680 }
6681 {
6682 var1138 = nitc___nitc__AbstractCompilerVisitor___get_name(var_v, var1131);
6683 }
6684 var_res1139 = var1138;
6685 if (unlikely(varonce1140==NULL)) {
6686 var1141 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
6687 if (likely(varonce1142!=NULL)) {
6688 var1143 = varonce1142;
6689 } else {
6690 var1144 = "struct instance_";
6691 var1146 = (val*)(16l<<2|1);
6692 var1147 = (val*)(16l<<2|1);
6693 var1148 = (val*)((long)(0)<<2|3);
6694 var1149 = (val*)((long)(0)<<2|3);
6695 var1145 = core__flat___CString___to_s_unsafe(var1144, var1146, var1147, var1148, var1149);
6696 var1143 = var1145;
6697 varonce1142 = var1143;
6698 }
6699 ((struct instance_core__NativeArray*)var1141)->values[0]=var1143;
6700 if (likely(varonce1150!=NULL)) {
6701 var1151 = varonce1150;
6702 } else {
6703 var1152 = " *";
6704 var1154 = (val*)(2l<<2|1);
6705 var1155 = (val*)(2l<<2|1);
6706 var1156 = (val*)((long)(0)<<2|3);
6707 var1157 = (val*)((long)(0)<<2|3);
6708 var1153 = core__flat___CString___to_s_unsafe(var1152, var1154, var1155, var1156, var1157);
6709 var1151 = var1153;
6710 varonce1150 = var1151;
6711 }
6712 ((struct instance_core__NativeArray*)var1141)->values[2]=var1151;
6713 if (likely(varonce1158!=NULL)) {
6714 var1159 = varonce1158;
6715 } else {
6716 var1160 = ";";
6717 var1162 = (val*)(1l<<2|1);
6718 var1163 = (val*)(1l<<2|1);
6719 var1164 = (val*)((long)(0)<<2|3);
6720 var1165 = (val*)((long)(0)<<2|3);
6721 var1161 = core__flat___CString___to_s_unsafe(var1160, var1162, var1163, var1164, var1165);
6722 var1159 = var1161;
6723 varonce1158 = var1159;
6724 }
6725 ((struct instance_core__NativeArray*)var1141)->values[4]=var1159;
6726 } else {
6727 var1141 = varonce1140;
6728 varonce1140 = NULL;
6729 }
6730 ((struct instance_core__NativeArray*)var1141)->values[1]=var_c_name;
6731 ((struct instance_core__NativeArray*)var1141)->values[3]=var_res1139;
6732 {
6733 var1166 = ((val*(*)(val* self))(var1141->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1141); /* native_to_s on <var1141:NativeArray[String]>*/
6734 }
6735 varonce1140 = var1141;
6736 {
6737 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var1166); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
6738 }
6739 {
6740 var1167 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model__MClassType__arguments]))(var_mtype); /* arguments on <var_mtype:MClassType>*/
6741 }
6742 {
6743 var1168 = core___core__SequenceRead___Collection__first(var1167);
6744 }
6745 var_mtype_elt = var1168;
6746 if (unlikely(varonce1169==NULL)) {
6747 var1170 = NEW_core__NativeArray((int)6l, &type_core__NativeArray__core__String);
6748 if (likely(varonce1171!=NULL)) {
6749 var1172 = varonce1171;
6750 } else {
6751 var1173 = " = nit_alloc(sizeof(struct instance_";
6752 var1175 = (val*)(36l<<2|1);
6753 var1176 = (val*)(36l<<2|1);
6754 var1177 = (val*)((long)(0)<<2|3);
6755 var1178 = (val*)((long)(0)<<2|3);
6756 var1174 = core__flat___CString___to_s_unsafe(var1173, var1175, var1176, var1177, var1178);
6757 var1172 = var1174;
6758 varonce1171 = var1172;
6759 }
6760 ((struct instance_core__NativeArray*)var1170)->values[1]=var1172;
6761 if (likely(varonce1179!=NULL)) {
6762 var1180 = varonce1179;
6763 } else {
6764 var1181 = ") + length*sizeof(";
6765 var1183 = (val*)(18l<<2|1);
6766 var1184 = (val*)(18l<<2|1);
6767 var1185 = (val*)((long)(0)<<2|3);
6768 var1186 = (val*)((long)(0)<<2|3);
6769 var1182 = core__flat___CString___to_s_unsafe(var1181, var1183, var1184, var1185, var1186);
6770 var1180 = var1182;
6771 varonce1179 = var1180;
6772 }
6773 ((struct instance_core__NativeArray*)var1170)->values[3]=var1180;
6774 if (likely(varonce1187!=NULL)) {
6775 var1188 = varonce1187;
6776 } else {
6777 var1189 = "));";
6778 var1191 = (val*)(3l<<2|1);
6779 var1192 = (val*)(3l<<2|1);
6780 var1193 = (val*)((long)(0)<<2|3);
6781 var1194 = (val*)((long)(0)<<2|3);
6782 var1190 = core__flat___CString___to_s_unsafe(var1189, var1191, var1192, var1193, var1194);
6783 var1188 = var1190;
6784 varonce1187 = var1188;
6785 }
6786 ((struct instance_core__NativeArray*)var1170)->values[5]=var1188;
6787 } else {
6788 var1170 = varonce1169;
6789 varonce1169 = NULL;
6790 }
6791 ((struct instance_core__NativeArray*)var1170)->values[0]=var_res1139;
6792 ((struct instance_core__NativeArray*)var1170)->values[2]=var_c_name;
6793 {
6794 var1195 = ((val*(*)(val* self))(var_mtype_elt->class->vft[COLOR_nitc__abstract_compiler__MType__ctype]))(var_mtype_elt); /* ctype on <var_mtype_elt:MType>*/
6795 }
6796 ((struct instance_core__NativeArray*)var1170)->values[4]=var1195;
6797 {
6798 var1196 = ((val*(*)(val* self))(var1170->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1170); /* native_to_s on <var1170:NativeArray[String]>*/
6799 }
6800 varonce1169 = var1170;
6801 {
6802 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1196); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
6803 }
6804 if (unlikely(varonce1197==NULL)) {
6805 var1198 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
6806 if (likely(varonce1199!=NULL)) {
6807 var1200 = varonce1199;
6808 } else {
6809 var1201 = "class_";
6810 var1203 = (val*)(6l<<2|1);
6811 var1204 = (val*)(6l<<2|1);
6812 var1205 = (val*)((long)(0)<<2|3);
6813 var1206 = (val*)((long)(0)<<2|3);
6814 var1202 = core__flat___CString___to_s_unsafe(var1201, var1203, var1204, var1205, var1206);
6815 var1200 = var1202;
6816 varonce1199 = var1200;
6817 }
6818 ((struct instance_core__NativeArray*)var1198)->values[0]=var1200;
6819 } else {
6820 var1198 = varonce1197;
6821 varonce1197 = NULL;
6822 }
6823 ((struct instance_core__NativeArray*)var1198)->values[1]=var_c_name;
6824 {
6825 var1207 = ((val*(*)(val* self))(var1198->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1198); /* native_to_s on <var1198:NativeArray[String]>*/
6826 }
6827 varonce1197 = var1198;
6828 {
6829 nitc___nitc__AbstractCompilerVisitor___require_declaration(var_v, var1207); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <var_v:SeparateCompilerVisitor>*/
6830 }
6831 if (unlikely(varonce1208==NULL)) {
6832 var1209 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
6833 if (likely(varonce1210!=NULL)) {
6834 var1211 = varonce1210;
6835 } else {
6836 var1212 = "->class = &class_";
6837 var1214 = (val*)(17l<<2|1);
6838 var1215 = (val*)(17l<<2|1);
6839 var1216 = (val*)((long)(0)<<2|3);
6840 var1217 = (val*)((long)(0)<<2|3);
6841 var1213 = core__flat___CString___to_s_unsafe(var1212, var1214, var1215, var1216, var1217);
6842 var1211 = var1213;
6843 varonce1210 = var1211;
6844 }
6845 ((struct instance_core__NativeArray*)var1209)->values[1]=var1211;
6846 if (likely(varonce1218!=NULL)) {
6847 var1219 = varonce1218;
6848 } else {
6849 var1220 = ";";
6850 var1222 = (val*)(1l<<2|1);
6851 var1223 = (val*)(1l<<2|1);
6852 var1224 = (val*)((long)(0)<<2|3);
6853 var1225 = (val*)((long)(0)<<2|3);
6854 var1221 = core__flat___CString___to_s_unsafe(var1220, var1222, var1223, var1224, var1225);
6855 var1219 = var1221;
6856 varonce1218 = var1219;
6857 }
6858 ((struct instance_core__NativeArray*)var1209)->values[3]=var1219;
6859 } else {
6860 var1209 = varonce1208;
6861 varonce1208 = NULL;
6862 }
6863 ((struct instance_core__NativeArray*)var1209)->values[0]=var_res1139;
6864 ((struct instance_core__NativeArray*)var1209)->values[2]=var_c_name;
6865 {
6866 var1226 = ((val*(*)(val* self))(var1209->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1209); /* native_to_s on <var1209:NativeArray[String]>*/
6867 }
6868 varonce1208 = var1209;
6869 {
6870 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1226); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
6871 }
6872 if (unlikely(varonce1227==NULL)) {
6873 var1228 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
6874 if (likely(varonce1229!=NULL)) {
6875 var1230 = varonce1229;
6876 } else {
6877 var1231 = "->length = length;";
6878 var1233 = (val*)(18l<<2|1);
6879 var1234 = (val*)(18l<<2|1);
6880 var1235 = (val*)((long)(0)<<2|3);
6881 var1236 = (val*)((long)(0)<<2|3);
6882 var1232 = core__flat___CString___to_s_unsafe(var1231, var1233, var1234, var1235, var1236);
6883 var1230 = var1232;
6884 varonce1229 = var1230;
6885 }
6886 ((struct instance_core__NativeArray*)var1228)->values[1]=var1230;
6887 } else {
6888 var1228 = varonce1227;
6889 varonce1227 = NULL;
6890 }
6891 ((struct instance_core__NativeArray*)var1228)->values[0]=var_res1139;
6892 {
6893 var1237 = ((val*(*)(val* self))(var1228->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1228); /* native_to_s on <var1228:NativeArray[String]>*/
6894 }
6895 varonce1227 = var1228;
6896 {
6897 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1237); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
6898 }
6899 if (unlikely(varonce1238==NULL)) {
6900 var1239 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
6901 if (likely(varonce1240!=NULL)) {
6902 var1241 = varonce1240;
6903 } else {
6904 var1242 = "return (val*)";
6905 var1244 = (val*)(13l<<2|1);
6906 var1245 = (val*)(13l<<2|1);
6907 var1246 = (val*)((long)(0)<<2|3);
6908 var1247 = (val*)((long)(0)<<2|3);
6909 var1243 = core__flat___CString___to_s_unsafe(var1242, var1244, var1245, var1246, var1247);
6910 var1241 = var1243;
6911 varonce1240 = var1241;
6912 }
6913 ((struct instance_core__NativeArray*)var1239)->values[0]=var1241;
6914 if (likely(varonce1248!=NULL)) {
6915 var1249 = varonce1248;
6916 } else {
6917 var1250 = ";";
6918 var1252 = (val*)(1l<<2|1);
6919 var1253 = (val*)(1l<<2|1);
6920 var1254 = (val*)((long)(0)<<2|3);
6921 var1255 = (val*)((long)(0)<<2|3);
6922 var1251 = core__flat___CString___to_s_unsafe(var1250, var1252, var1253, var1254, var1255);
6923 var1249 = var1251;
6924 varonce1248 = var1249;
6925 }
6926 ((struct instance_core__NativeArray*)var1239)->values[2]=var1249;
6927 } else {
6928 var1239 = varonce1238;
6929 varonce1238 = NULL;
6930 }
6931 ((struct instance_core__NativeArray*)var1239)->values[1]=var_res1139;
6932 {
6933 var1256 = ((val*(*)(val* self))(var1239->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1239); /* native_to_s on <var1239:NativeArray[String]>*/
6934 }
6935 varonce1238 = var1239;
6936 {
6937 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1256); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
6938 }
6939 if (likely(varonce1257!=NULL)) {
6940 var1258 = varonce1257;
6941 } else {
6942 var1259 = "}";
6943 var1261 = (val*)(1l<<2|1);
6944 var1262 = (val*)(1l<<2|1);
6945 var1263 = (val*)((long)(0)<<2|3);
6946 var1264 = (val*)((long)(0)<<2|3);
6947 var1260 = core__flat___CString___to_s_unsafe(var1259, var1261, var1262, var1263, var1264);
6948 var1258 = var1260;
6949 varonce1257 = var1258;
6950 }
6951 {
6952 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1258); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
6953 }
6954 goto RET_LABEL;
6955 } else {
6956 {
6957 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MClassType> */
6958 var1268 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
6959 if (unlikely(var1268 == NULL)) {
6960 if(catchStack.cursor >= 0){
6961 longjmp(catchStack.envs[catchStack.cursor], 1);
6962 }
6963 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
6964 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
6965 fatal_exit(1);
6966 }
6967 var1266 = var1268;
6968 RET_LABEL1267:(void)0;
6969 }
6970 }
6971 {
6972 { /* Inline model$MClass$kind (var1266) on <var1266:MClass> */
6973 var1271 = var1266->attrs[COLOR_nitc__model__MClass___kind].val; /* _kind on <var1266:MClass> */
6974 if (unlikely(var1271 == NULL)) {
6975 if(catchStack.cursor >= 0){
6976 longjmp(catchStack.envs[catchStack.cursor], 1);
6977 }
6978 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
6979 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 472);
6980 fatal_exit(1);
6981 }
6982 var1269 = var1271;
6983 RET_LABEL1270:(void)0;
6984 }
6985 }
6986 var1272 = glob_sys;
6987 {
6988 var1273 = nitc__model___core__Sys___extern_kind(var1272);
6989 }
6990 {
6991 { /* Inline kernel$Object$== (var1269,var1273) on <var1269:MClassKind> */
6992 var_other293 = var1273;
6993 {
6994 { /* Inline kernel$Object$is_same_instance (var1269,var_other293) on <var1269:MClassKind> */
6995 var1278 = var1269 == var_other293;
6996 var1276 = var1278;
6997 goto RET_LABEL1277;
6998 RET_LABEL1277:(void)0;
6999 }
7000 }
7001 var1274 = var1276;
7002 goto RET_LABEL1275;
7003 RET_LABEL1275:(void)0;
7004 }
7005 }
7006 var_1279 = var1274;
7007 if (var1274){
7008 {
7009 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MClassType> */
7010 var1282 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
7011 if (unlikely(var1282 == NULL)) {
7012 if(catchStack.cursor >= 0){
7013 longjmp(catchStack.envs[catchStack.cursor], 1);
7014 }
7015 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
7016 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
7017 fatal_exit(1);
7018 }
7019 var1280 = var1282;
7020 RET_LABEL1281:(void)0;
7021 }
7022 }
7023 {
7024 { /* Inline model$MClass$name (var1280) on <var1280:MClass> */
7025 var1285 = var1280->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var1280:MClass> */
7026 if (unlikely(var1285 == NULL)) {
7027 if(catchStack.cursor >= 0){
7028 longjmp(catchStack.envs[catchStack.cursor], 1);
7029 }
7030 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
7031 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 396);
7032 fatal_exit(1);
7033 }
7034 var1283 = var1285;
7035 RET_LABEL1284:(void)0;
7036 }
7037 }
7038 if (likely(varonce1286!=NULL)) {
7039 var1287 = varonce1286;
7040 } else {
7041 var1288 = "CString";
7042 var1290 = (val*)(7l<<2|1);
7043 var1291 = (val*)(7l<<2|1);
7044 var1292 = (val*)((long)(0)<<2|3);
7045 var1293 = (val*)((long)(0)<<2|3);
7046 var1289 = core__flat___CString___to_s_unsafe(var1288, var1290, var1291, var1292, var1293);
7047 var1287 = var1289;
7048 varonce1286 = var1287;
7049 }
7050 {
7051 { /* Inline kernel$Object$!= (var1283,var1287) on <var1283:String> */
7052 var_other = var1287;
7053 {
7054 var1296 = ((short int(*)(val* self, val* p0))(var1283->class->vft[COLOR_core__kernel__Object___61d_61d]))(var1283, var_other); /* == on <var1283:String>*/
7055 }
7056 var1297 = !var1296;
7057 var1294 = var1297;
7058 goto RET_LABEL1295;
7059 RET_LABEL1295:(void)0;
7060 }
7061 }
7062 var1265 = var1294;
7063 } else {
7064 var1265 = var_1279;
7065 }
7066 if (var1265){
7067 {
7068 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:SeparateErasureCompiler> */
7069 var1300 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
7070 if (unlikely(var1300 == NULL)) {
7071 if(catchStack.cursor >= 0){
7072 longjmp(catchStack.envs[catchStack.cursor], 1);
7073 }
7074 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
7075 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
7076 fatal_exit(1);
7077 }
7078 var1298 = var1300;
7079 RET_LABEL1299:(void)0;
7080 }
7081 }
7082 {
7083 var1301 = nitc__model___MModule___pointer_type(var1298);
7084 }
7085 var_pointer_type = var1301;
7086 if (unlikely(varonce1302==NULL)) {
7087 var1303 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
7088 if (likely(varonce1304!=NULL)) {
7089 var1305 = varonce1304;
7090 } else {
7091 var1306 = "NEW_";
7092 var1308 = (val*)(4l<<2|1);
7093 var1309 = (val*)(4l<<2|1);
7094 var1310 = (val*)((long)(0)<<2|3);
7095 var1311 = (val*)((long)(0)<<2|3);
7096 var1307 = core__flat___CString___to_s_unsafe(var1306, var1308, var1309, var1310, var1311);
7097 var1305 = var1307;
7098 varonce1304 = var1305;
7099 }
7100 ((struct instance_core__NativeArray*)var1303)->values[0]=var1305;
7101 } else {
7102 var1303 = varonce1302;
7103 varonce1302 = NULL;
7104 }
7105 ((struct instance_core__NativeArray*)var1303)->values[1]=var_c_name;
7106 {
7107 var1312 = ((val*(*)(val* self))(var1303->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1303); /* native_to_s on <var1303:NativeArray[String]>*/
7108 }
7109 varonce1302 = var1303;
7110 if (unlikely(varonce1313==NULL)) {
7111 var1314 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
7112 if (likely(varonce1315!=NULL)) {
7113 var1316 = varonce1315;
7114 } else {
7115 var1317 = " NEW_";
7116 var1319 = (val*)(5l<<2|1);
7117 var1320 = (val*)(5l<<2|1);
7118 var1321 = (val*)((long)(0)<<2|3);
7119 var1322 = (val*)((long)(0)<<2|3);
7120 var1318 = core__flat___CString___to_s_unsafe(var1317, var1319, var1320, var1321, var1322);
7121 var1316 = var1318;
7122 varonce1315 = var1316;
7123 }
7124 ((struct instance_core__NativeArray*)var1314)->values[1]=var1316;
7125 if (likely(varonce1323!=NULL)) {
7126 var1324 = varonce1323;
7127 } else {
7128 var1325 = "();";
7129 var1327 = (val*)(3l<<2|1);
7130 var1328 = (val*)(3l<<2|1);
7131 var1329 = (val*)((long)(0)<<2|3);
7132 var1330 = (val*)((long)(0)<<2|3);
7133 var1326 = core__flat___CString___to_s_unsafe(var1325, var1327, var1328, var1329, var1330);
7134 var1324 = var1326;
7135 varonce1323 = var1324;
7136 }
7137 ((struct instance_core__NativeArray*)var1314)->values[3]=var1324;
7138 } else {
7139 var1314 = varonce1313;
7140 varonce1313 = NULL;
7141 }
7142 {
7143 var1331 = nitc__abstract_compiler___MClassType___MType__ctype(var_mtype);
7144 }
7145 ((struct instance_core__NativeArray*)var1314)->values[0]=var1331;
7146 ((struct instance_core__NativeArray*)var1314)->values[2]=var_c_name;
7147 {
7148 var1332 = ((val*(*)(val* self))(var1314->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1314); /* native_to_s on <var1314:NativeArray[String]>*/
7149 }
7150 varonce1313 = var1314;
7151 {
7152 nitc___nitc__AbstractCompiler___provide_declaration(self, var1312, var1332); /* Direct call abstract_compiler$AbstractCompiler$provide_declaration on <self:SeparateErasureCompiler>*/
7153 }
7154 if (unlikely(varonce1333==NULL)) {
7155 var1334 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
7156 if (likely(varonce1335!=NULL)) {
7157 var1336 = varonce1335;
7158 } else {
7159 var1337 = "/* allocate ";
7160 var1339 = (val*)(12l<<2|1);
7161 var1340 = (val*)(12l<<2|1);
7162 var1341 = (val*)((long)(0)<<2|3);
7163 var1342 = (val*)((long)(0)<<2|3);
7164 var1338 = core__flat___CString___to_s_unsafe(var1337, var1339, var1340, var1341, var1342);
7165 var1336 = var1338;
7166 varonce1335 = var1336;
7167 }
7168 ((struct instance_core__NativeArray*)var1334)->values[0]=var1336;
7169 if (likely(varonce1343!=NULL)) {
7170 var1344 = varonce1343;
7171 } else {
7172 var1345 = " */";
7173 var1347 = (val*)(3l<<2|1);
7174 var1348 = (val*)(3l<<2|1);
7175 var1349 = (val*)((long)(0)<<2|3);
7176 var1350 = (val*)((long)(0)<<2|3);
7177 var1346 = core__flat___CString___to_s_unsafe(var1345, var1347, var1348, var1349, var1350);
7178 var1344 = var1346;
7179 varonce1343 = var1344;
7180 }
7181 ((struct instance_core__NativeArray*)var1334)->values[2]=var1344;
7182 } else {
7183 var1334 = varonce1333;
7184 varonce1333 = NULL;
7185 }
7186 {
7187 var1351 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MClassType>*/
7188 }
7189 ((struct instance_core__NativeArray*)var1334)->values[1]=var1351;
7190 {
7191 var1352 = ((val*(*)(val* self))(var1334->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1334); /* native_to_s on <var1334:NativeArray[String]>*/
7192 }
7193 varonce1333 = var1334;
7194 {
7195 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var1352); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
7196 }
7197 if (unlikely(varonce1353==NULL)) {
7198 var1354 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
7199 if (likely(varonce1355!=NULL)) {
7200 var1356 = varonce1355;
7201 } else {
7202 var1357 = " NEW_";
7203 var1359 = (val*)(5l<<2|1);
7204 var1360 = (val*)(5l<<2|1);
7205 var1361 = (val*)((long)(0)<<2|3);
7206 var1362 = (val*)((long)(0)<<2|3);
7207 var1358 = core__flat___CString___to_s_unsafe(var1357, var1359, var1360, var1361, var1362);
7208 var1356 = var1358;
7209 varonce1355 = var1356;
7210 }
7211 ((struct instance_core__NativeArray*)var1354)->values[1]=var1356;
7212 if (likely(varonce1363!=NULL)) {
7213 var1364 = varonce1363;
7214 } else {
7215 var1365 = "() {";
7216 var1367 = (val*)(4l<<2|1);
7217 var1368 = (val*)(4l<<2|1);
7218 var1369 = (val*)((long)(0)<<2|3);
7219 var1370 = (val*)((long)(0)<<2|3);
7220 var1366 = core__flat___CString___to_s_unsafe(var1365, var1367, var1368, var1369, var1370);
7221 var1364 = var1366;
7222 varonce1363 = var1364;
7223 }
7224 ((struct instance_core__NativeArray*)var1354)->values[3]=var1364;
7225 } else {
7226 var1354 = varonce1353;
7227 varonce1353 = NULL;
7228 }
7229 {
7230 var1371 = nitc__abstract_compiler___MClassType___MType__ctype(var_mtype);
7231 }
7232 ((struct instance_core__NativeArray*)var1354)->values[0]=var1371;
7233 ((struct instance_core__NativeArray*)var1354)->values[2]=var_c_name;
7234 {
7235 var1372 = ((val*(*)(val* self))(var1354->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1354); /* native_to_s on <var1354:NativeArray[String]>*/
7236 }
7237 varonce1353 = var1354;
7238 {
7239 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var1372); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
7240 }
7241 if (var_is_dead){
7242 if (unlikely(varonce1373==NULL)) {
7243 var1374 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
7244 if (likely(varonce1375!=NULL)) {
7245 var1376 = varonce1375;
7246 } else {
7247 var1377 = " is DEAD";
7248 var1379 = (val*)(8l<<2|1);
7249 var1380 = (val*)(8l<<2|1);
7250 var1381 = (val*)((long)(0)<<2|3);
7251 var1382 = (val*)((long)(0)<<2|3);
7252 var1378 = core__flat___CString___to_s_unsafe(var1377, var1379, var1380, var1381, var1382);
7253 var1376 = var1378;
7254 varonce1375 = var1376;
7255 }
7256 ((struct instance_core__NativeArray*)var1374)->values[1]=var1376;
7257 } else {
7258 var1374 = varonce1373;
7259 varonce1373 = NULL;
7260 }
7261 {
7262 var1383 = ((val*(*)(val* self))(var_mclass->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mclass); /* to_s on <var_mclass:MClass>*/
7263 }
7264 ((struct instance_core__NativeArray*)var1374)->values[0]=var1383;
7265 {
7266 var1384 = ((val*(*)(val* self))(var1374->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1374); /* native_to_s on <var1374:NativeArray[String]>*/
7267 }
7268 varonce1373 = var1374;
7269 {
7270 nitc___nitc__AbstractCompilerVisitor___add_abort(var_v, var1384); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_abort on <var_v:SeparateCompilerVisitor>*/
7271 }
7272 } else {
7273 if (likely(varonce1385!=NULL)) {
7274 var1386 = varonce1385;
7275 } else {
7276 var1387 = "self";
7277 var1389 = (val*)(4l<<2|1);
7278 var1390 = (val*)(4l<<2|1);
7279 var1391 = (val*)((long)(0)<<2|3);
7280 var1392 = (val*)((long)(0)<<2|3);
7281 var1388 = core__flat___CString___to_s_unsafe(var1387, var1389, var1390, var1391, var1392);
7282 var1386 = var1388;
7283 varonce1385 = var1386;
7284 }
7285 {
7286 var1393 = nitc___nitc__AbstractCompilerVisitor___new_named_var(var_v, var_mtype, var1386);
7287 }
7288 var_res1394 = var1393;
7289 {
7290 { /* Inline abstract_compiler$RuntimeVariable$is_exact= (var_res1394,1) on <var_res1394:RuntimeVariable> */
7291 var_res1394->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___is_exact].s = 1; /* _is_exact on <var_res1394:RuntimeVariable> */
7292 RET_LABEL1395:(void)0;
7293 }
7294 }
7295 if (unlikely(varonce1396==NULL)) {
7296 var1397 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
7297 if (likely(varonce1398!=NULL)) {
7298 var1399 = varonce1398;
7299 } else {
7300 var1400 = " = nit_alloc(sizeof(struct instance_";
7301 var1402 = (val*)(36l<<2|1);
7302 var1403 = (val*)(36l<<2|1);
7303 var1404 = (val*)((long)(0)<<2|3);
7304 var1405 = (val*)((long)(0)<<2|3);
7305 var1401 = core__flat___CString___to_s_unsafe(var1400, var1402, var1403, var1404, var1405);
7306 var1399 = var1401;
7307 varonce1398 = var1399;
7308 }
7309 ((struct instance_core__NativeArray*)var1397)->values[1]=var1399;
7310 if (likely(varonce1406!=NULL)) {
7311 var1407 = varonce1406;
7312 } else {
7313 var1408 = "));";
7314 var1410 = (val*)(3l<<2|1);
7315 var1411 = (val*)(3l<<2|1);
7316 var1412 = (val*)((long)(0)<<2|3);
7317 var1413 = (val*)((long)(0)<<2|3);
7318 var1409 = core__flat___CString___to_s_unsafe(var1408, var1410, var1411, var1412, var1413);
7319 var1407 = var1409;
7320 varonce1406 = var1407;
7321 }
7322 ((struct instance_core__NativeArray*)var1397)->values[3]=var1407;
7323 } else {
7324 var1397 = varonce1396;
7325 varonce1396 = NULL;
7326 }
7327 {
7328 var1414 = ((val*(*)(val* self))(var_res1394->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res1394); /* to_s on <var_res1394:RuntimeVariable>*/
7329 }
7330 ((struct instance_core__NativeArray*)var1397)->values[0]=var1414;
7331 {
7332 var1415 = ((val*(*)(val* self))(var_pointer_type->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_pointer_type); /* c_name on <var_pointer_type:MClassType>*/
7333 }
7334 ((struct instance_core__NativeArray*)var1397)->values[2]=var1415;
7335 {
7336 var1416 = ((val*(*)(val* self))(var1397->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1397); /* native_to_s on <var1397:NativeArray[String]>*/
7337 }
7338 varonce1396 = var1397;
7339 {
7340 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1416); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
7341 }
7342 if (unlikely(varonce1417==NULL)) {
7343 var1418 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
7344 if (likely(varonce1419!=NULL)) {
7345 var1420 = varonce1419;
7346 } else {
7347 var1421 = "class_";
7348 var1423 = (val*)(6l<<2|1);
7349 var1424 = (val*)(6l<<2|1);
7350 var1425 = (val*)((long)(0)<<2|3);
7351 var1426 = (val*)((long)(0)<<2|3);
7352 var1422 = core__flat___CString___to_s_unsafe(var1421, var1423, var1424, var1425, var1426);
7353 var1420 = var1422;
7354 varonce1419 = var1420;
7355 }
7356 ((struct instance_core__NativeArray*)var1418)->values[0]=var1420;
7357 } else {
7358 var1418 = varonce1417;
7359 varonce1417 = NULL;
7360 }
7361 ((struct instance_core__NativeArray*)var1418)->values[1]=var_c_name;
7362 {
7363 var1427 = ((val*(*)(val* self))(var1418->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1418); /* native_to_s on <var1418:NativeArray[String]>*/
7364 }
7365 varonce1417 = var1418;
7366 {
7367 nitc___nitc__AbstractCompilerVisitor___require_declaration(var_v, var1427); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <var_v:SeparateCompilerVisitor>*/
7368 }
7369 if (unlikely(varonce1428==NULL)) {
7370 var1429 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
7371 if (likely(varonce1430!=NULL)) {
7372 var1431 = varonce1430;
7373 } else {
7374 var1432 = "->class = &class_";
7375 var1434 = (val*)(17l<<2|1);
7376 var1435 = (val*)(17l<<2|1);
7377 var1436 = (val*)((long)(0)<<2|3);
7378 var1437 = (val*)((long)(0)<<2|3);
7379 var1433 = core__flat___CString___to_s_unsafe(var1432, var1434, var1435, var1436, var1437);
7380 var1431 = var1433;
7381 varonce1430 = var1431;
7382 }
7383 ((struct instance_core__NativeArray*)var1429)->values[1]=var1431;
7384 if (likely(varonce1438!=NULL)) {
7385 var1439 = varonce1438;
7386 } else {
7387 var1440 = ";";
7388 var1442 = (val*)(1l<<2|1);
7389 var1443 = (val*)(1l<<2|1);
7390 var1444 = (val*)((long)(0)<<2|3);
7391 var1445 = (val*)((long)(0)<<2|3);
7392 var1441 = core__flat___CString___to_s_unsafe(var1440, var1442, var1443, var1444, var1445);
7393 var1439 = var1441;
7394 varonce1438 = var1439;
7395 }
7396 ((struct instance_core__NativeArray*)var1429)->values[3]=var1439;
7397 } else {
7398 var1429 = varonce1428;
7399 varonce1428 = NULL;
7400 }
7401 {
7402 var1446 = ((val*(*)(val* self))(var_res1394->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res1394); /* to_s on <var_res1394:RuntimeVariable>*/
7403 }
7404 ((struct instance_core__NativeArray*)var1429)->values[0]=var1446;
7405 ((struct instance_core__NativeArray*)var1429)->values[2]=var_c_name;
7406 {
7407 var1447 = ((val*(*)(val* self))(var1429->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1429); /* native_to_s on <var1429:NativeArray[String]>*/
7408 }
7409 varonce1428 = var1429;
7410 {
7411 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1447); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
7412 }
7413 if (unlikely(varonce1448==NULL)) {
7414 var1449 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
7415 if (likely(varonce1450!=NULL)) {
7416 var1451 = varonce1450;
7417 } else {
7418 var1452 = "((struct instance_";
7419 var1454 = (val*)(18l<<2|1);
7420 var1455 = (val*)(18l<<2|1);
7421 var1456 = (val*)((long)(0)<<2|3);
7422 var1457 = (val*)((long)(0)<<2|3);
7423 var1453 = core__flat___CString___to_s_unsafe(var1452, var1454, var1455, var1456, var1457);
7424 var1451 = var1453;
7425 varonce1450 = var1451;
7426 }
7427 ((struct instance_core__NativeArray*)var1449)->values[0]=var1451;
7428 if (likely(varonce1458!=NULL)) {
7429 var1459 = varonce1458;
7430 } else {
7431 var1460 = "*)";
7432 var1462 = (val*)(2l<<2|1);
7433 var1463 = (val*)(2l<<2|1);
7434 var1464 = (val*)((long)(0)<<2|3);
7435 var1465 = (val*)((long)(0)<<2|3);
7436 var1461 = core__flat___CString___to_s_unsafe(var1460, var1462, var1463, var1464, var1465);
7437 var1459 = var1461;
7438 varonce1458 = var1459;
7439 }
7440 ((struct instance_core__NativeArray*)var1449)->values[2]=var1459;
7441 if (likely(varonce1466!=NULL)) {
7442 var1467 = varonce1466;
7443 } else {
7444 var1468 = ")->value = NULL;";
7445 var1470 = (val*)(16l<<2|1);
7446 var1471 = (val*)(16l<<2|1);
7447 var1472 = (val*)((long)(0)<<2|3);
7448 var1473 = (val*)((long)(0)<<2|3);
7449 var1469 = core__flat___CString___to_s_unsafe(var1468, var1470, var1471, var1472, var1473);
7450 var1467 = var1469;
7451 varonce1466 = var1467;
7452 }
7453 ((struct instance_core__NativeArray*)var1449)->values[4]=var1467;
7454 } else {
7455 var1449 = varonce1448;
7456 varonce1448 = NULL;
7457 }
7458 {
7459 var1474 = ((val*(*)(val* self))(var_pointer_type->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_pointer_type); /* c_name on <var_pointer_type:MClassType>*/
7460 }
7461 ((struct instance_core__NativeArray*)var1449)->values[1]=var1474;
7462 {
7463 var1475 = ((val*(*)(val* self))(var_res1394->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res1394); /* to_s on <var_res1394:RuntimeVariable>*/
7464 }
7465 ((struct instance_core__NativeArray*)var1449)->values[3]=var1475;
7466 {
7467 var1476 = ((val*(*)(val* self))(var1449->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1449); /* native_to_s on <var1449:NativeArray[String]>*/
7468 }
7469 varonce1448 = var1449;
7470 {
7471 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1476); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
7472 }
7473 if (unlikely(varonce1477==NULL)) {
7474 var1478 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
7475 if (likely(varonce1479!=NULL)) {
7476 var1480 = varonce1479;
7477 } else {
7478 var1481 = "return ";
7479 var1483 = (val*)(7l<<2|1);
7480 var1484 = (val*)(7l<<2|1);
7481 var1485 = (val*)((long)(0)<<2|3);
7482 var1486 = (val*)((long)(0)<<2|3);
7483 var1482 = core__flat___CString___to_s_unsafe(var1481, var1483, var1484, var1485, var1486);
7484 var1480 = var1482;
7485 varonce1479 = var1480;
7486 }
7487 ((struct instance_core__NativeArray*)var1478)->values[0]=var1480;
7488 if (likely(varonce1487!=NULL)) {
7489 var1488 = varonce1487;
7490 } else {
7491 var1489 = ";";
7492 var1491 = (val*)(1l<<2|1);
7493 var1492 = (val*)(1l<<2|1);
7494 var1493 = (val*)((long)(0)<<2|3);
7495 var1494 = (val*)((long)(0)<<2|3);
7496 var1490 = core__flat___CString___to_s_unsafe(var1489, var1491, var1492, var1493, var1494);
7497 var1488 = var1490;
7498 varonce1487 = var1488;
7499 }
7500 ((struct instance_core__NativeArray*)var1478)->values[2]=var1488;
7501 } else {
7502 var1478 = varonce1477;
7503 varonce1477 = NULL;
7504 }
7505 {
7506 var1495 = ((val*(*)(val* self))(var_res1394->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res1394); /* to_s on <var_res1394:RuntimeVariable>*/
7507 }
7508 ((struct instance_core__NativeArray*)var1478)->values[1]=var1495;
7509 {
7510 var1496 = ((val*(*)(val* self))(var1478->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1478); /* native_to_s on <var1478:NativeArray[String]>*/
7511 }
7512 varonce1477 = var1478;
7513 {
7514 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1496); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
7515 }
7516 }
7517 if (likely(varonce1497!=NULL)) {
7518 var1498 = varonce1497;
7519 } else {
7520 var1499 = "}";
7521 var1501 = (val*)(1l<<2|1);
7522 var1502 = (val*)(1l<<2|1);
7523 var1503 = (val*)((long)(0)<<2|3);
7524 var1504 = (val*)((long)(0)<<2|3);
7525 var1500 = core__flat___CString___to_s_unsafe(var1499, var1501, var1502, var1503, var1504);
7526 var1498 = var1500;
7527 varonce1497 = var1498;
7528 }
7529 {
7530 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1498); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
7531 }
7532 goto RET_LABEL;
7533 } else {
7534 }
7535 }
7536 }
7537 if (unlikely(varonce1505==NULL)) {
7538 var1506 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
7539 if (likely(varonce1507!=NULL)) {
7540 var1508 = varonce1507;
7541 } else {
7542 var1509 = "NEW_";
7543 var1511 = (val*)(4l<<2|1);
7544 var1512 = (val*)(4l<<2|1);
7545 var1513 = (val*)((long)(0)<<2|3);
7546 var1514 = (val*)((long)(0)<<2|3);
7547 var1510 = core__flat___CString___to_s_unsafe(var1509, var1511, var1512, var1513, var1514);
7548 var1508 = var1510;
7549 varonce1507 = var1508;
7550 }
7551 ((struct instance_core__NativeArray*)var1506)->values[0]=var1508;
7552 } else {
7553 var1506 = varonce1505;
7554 varonce1505 = NULL;
7555 }
7556 ((struct instance_core__NativeArray*)var1506)->values[1]=var_c_name;
7557 {
7558 var1515 = ((val*(*)(val* self))(var1506->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1506); /* native_to_s on <var1506:NativeArray[String]>*/
7559 }
7560 varonce1505 = var1506;
7561 if (unlikely(varonce1516==NULL)) {
7562 var1517 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
7563 if (likely(varonce1518!=NULL)) {
7564 var1519 = varonce1518;
7565 } else {
7566 var1520 = " NEW_";
7567 var1522 = (val*)(5l<<2|1);
7568 var1523 = (val*)(5l<<2|1);
7569 var1524 = (val*)((long)(0)<<2|3);
7570 var1525 = (val*)((long)(0)<<2|3);
7571 var1521 = core__flat___CString___to_s_unsafe(var1520, var1522, var1523, var1524, var1525);
7572 var1519 = var1521;
7573 varonce1518 = var1519;
7574 }
7575 ((struct instance_core__NativeArray*)var1517)->values[1]=var1519;
7576 if (likely(varonce1526!=NULL)) {
7577 var1527 = varonce1526;
7578 } else {
7579 var1528 = "(void);";
7580 var1530 = (val*)(7l<<2|1);
7581 var1531 = (val*)(7l<<2|1);
7582 var1532 = (val*)((long)(0)<<2|3);
7583 var1533 = (val*)((long)(0)<<2|3);
7584 var1529 = core__flat___CString___to_s_unsafe(var1528, var1530, var1531, var1532, var1533);
7585 var1527 = var1529;
7586 varonce1526 = var1527;
7587 }
7588 ((struct instance_core__NativeArray*)var1517)->values[3]=var1527;
7589 } else {
7590 var1517 = varonce1516;
7591 varonce1516 = NULL;
7592 }
7593 {
7594 var1534 = nitc__abstract_compiler___MClassType___MType__ctype(var_mtype);
7595 }
7596 ((struct instance_core__NativeArray*)var1517)->values[0]=var1534;
7597 ((struct instance_core__NativeArray*)var1517)->values[2]=var_c_name;
7598 {
7599 var1535 = ((val*(*)(val* self))(var1517->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1517); /* native_to_s on <var1517:NativeArray[String]>*/
7600 }
7601 varonce1516 = var1517;
7602 {
7603 nitc___nitc__AbstractCompiler___provide_declaration(self, var1515, var1535); /* Direct call abstract_compiler$AbstractCompiler$provide_declaration on <self:SeparateErasureCompiler>*/
7604 }
7605 if (unlikely(varonce1536==NULL)) {
7606 var1537 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
7607 if (likely(varonce1538!=NULL)) {
7608 var1539 = varonce1538;
7609 } else {
7610 var1540 = "/* allocate ";
7611 var1542 = (val*)(12l<<2|1);
7612 var1543 = (val*)(12l<<2|1);
7613 var1544 = (val*)((long)(0)<<2|3);
7614 var1545 = (val*)((long)(0)<<2|3);
7615 var1541 = core__flat___CString___to_s_unsafe(var1540, var1542, var1543, var1544, var1545);
7616 var1539 = var1541;
7617 varonce1538 = var1539;
7618 }
7619 ((struct instance_core__NativeArray*)var1537)->values[0]=var1539;
7620 if (likely(varonce1546!=NULL)) {
7621 var1547 = varonce1546;
7622 } else {
7623 var1548 = " */";
7624 var1550 = (val*)(3l<<2|1);
7625 var1551 = (val*)(3l<<2|1);
7626 var1552 = (val*)((long)(0)<<2|3);
7627 var1553 = (val*)((long)(0)<<2|3);
7628 var1549 = core__flat___CString___to_s_unsafe(var1548, var1550, var1551, var1552, var1553);
7629 var1547 = var1549;
7630 varonce1546 = var1547;
7631 }
7632 ((struct instance_core__NativeArray*)var1537)->values[2]=var1547;
7633 } else {
7634 var1537 = varonce1536;
7635 varonce1536 = NULL;
7636 }
7637 {
7638 var1554 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MClassType>*/
7639 }
7640 ((struct instance_core__NativeArray*)var1537)->values[1]=var1554;
7641 {
7642 var1555 = ((val*(*)(val* self))(var1537->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1537); /* native_to_s on <var1537:NativeArray[String]>*/
7643 }
7644 varonce1536 = var1537;
7645 {
7646 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var1555); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
7647 }
7648 if (unlikely(varonce1556==NULL)) {
7649 var1557 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
7650 if (likely(varonce1558!=NULL)) {
7651 var1559 = varonce1558;
7652 } else {
7653 var1560 = " NEW_";
7654 var1562 = (val*)(5l<<2|1);
7655 var1563 = (val*)(5l<<2|1);
7656 var1564 = (val*)((long)(0)<<2|3);
7657 var1565 = (val*)((long)(0)<<2|3);
7658 var1561 = core__flat___CString___to_s_unsafe(var1560, var1562, var1563, var1564, var1565);
7659 var1559 = var1561;
7660 varonce1558 = var1559;
7661 }
7662 ((struct instance_core__NativeArray*)var1557)->values[1]=var1559;
7663 if (likely(varonce1566!=NULL)) {
7664 var1567 = varonce1566;
7665 } else {
7666 var1568 = "(void) {";
7667 var1570 = (val*)(8l<<2|1);
7668 var1571 = (val*)(8l<<2|1);
7669 var1572 = (val*)((long)(0)<<2|3);
7670 var1573 = (val*)((long)(0)<<2|3);
7671 var1569 = core__flat___CString___to_s_unsafe(var1568, var1570, var1571, var1572, var1573);
7672 var1567 = var1569;
7673 varonce1566 = var1567;
7674 }
7675 ((struct instance_core__NativeArray*)var1557)->values[3]=var1567;
7676 } else {
7677 var1557 = varonce1556;
7678 varonce1556 = NULL;
7679 }
7680 {
7681 var1574 = nitc__abstract_compiler___MClassType___MType__ctype(var_mtype);
7682 }
7683 ((struct instance_core__NativeArray*)var1557)->values[0]=var1574;
7684 ((struct instance_core__NativeArray*)var1557)->values[2]=var_c_name;
7685 {
7686 var1575 = ((val*(*)(val* self))(var1557->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1557); /* native_to_s on <var1557:NativeArray[String]>*/
7687 }
7688 varonce1556 = var1557;
7689 {
7690 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var1575); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
7691 }
7692 if (var_is_dead){
7693 if (unlikely(varonce1576==NULL)) {
7694 var1577 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
7695 if (likely(varonce1578!=NULL)) {
7696 var1579 = varonce1578;
7697 } else {
7698 var1580 = " is DEAD";
7699 var1582 = (val*)(8l<<2|1);
7700 var1583 = (val*)(8l<<2|1);
7701 var1584 = (val*)((long)(0)<<2|3);
7702 var1585 = (val*)((long)(0)<<2|3);
7703 var1581 = core__flat___CString___to_s_unsafe(var1580, var1582, var1583, var1584, var1585);
7704 var1579 = var1581;
7705 varonce1578 = var1579;
7706 }
7707 ((struct instance_core__NativeArray*)var1577)->values[1]=var1579;
7708 } else {
7709 var1577 = varonce1576;
7710 varonce1576 = NULL;
7711 }
7712 {
7713 var1586 = ((val*(*)(val* self))(var_mclass->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mclass); /* to_s on <var_mclass:MClass>*/
7714 }
7715 ((struct instance_core__NativeArray*)var1577)->values[0]=var1586;
7716 {
7717 var1587 = ((val*(*)(val* self))(var1577->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1577); /* native_to_s on <var1577:NativeArray[String]>*/
7718 }
7719 varonce1576 = var1577;
7720 {
7721 nitc___nitc__AbstractCompilerVisitor___add_abort(var_v, var1587); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_abort on <var_v:SeparateCompilerVisitor>*/
7722 }
7723 } else {
7724 if (likely(varonce1588!=NULL)) {
7725 var1589 = varonce1588;
7726 } else {
7727 var1590 = "self";
7728 var1592 = (val*)(4l<<2|1);
7729 var1593 = (val*)(4l<<2|1);
7730 var1594 = (val*)((long)(0)<<2|3);
7731 var1595 = (val*)((long)(0)<<2|3);
7732 var1591 = core__flat___CString___to_s_unsafe(var1590, var1592, var1593, var1594, var1595);
7733 var1589 = var1591;
7734 varonce1588 = var1589;
7735 }
7736 {
7737 var1596 = nitc___nitc__AbstractCompilerVisitor___new_named_var(var_v, var_mtype, var1589);
7738 }
7739 var_res1597 = var1596;
7740 {
7741 { /* Inline abstract_compiler$RuntimeVariable$is_exact= (var_res1597,1) on <var_res1597:RuntimeVariable> */
7742 var_res1597->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___is_exact].s = 1; /* _is_exact on <var_res1597:RuntimeVariable> */
7743 RET_LABEL1598:(void)0;
7744 }
7745 }
7746 {
7747 { /* Inline separate_compiler$SeparateCompiler$attr_tables (self) on <self:SeparateErasureCompiler> */
7748 var1601 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___attr_tables].val; /* _attr_tables on <self:SeparateErasureCompiler> */
7749 if (unlikely(var1601 == NULL)) {
7750 if(catchStack.cursor >= 0){
7751 longjmp(catchStack.envs[catchStack.cursor], 1);
7752 }
7753 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
7754 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1074);
7755 fatal_exit(1);
7756 }
7757 var1599 = var1601;
7758 RET_LABEL1600:(void)0;
7759 }
7760 }
7761 {
7762 var1602 = ((val*(*)(val* self, val* p0))((((long)var1599&3)?class_info[((long)var1599&3)]:var1599->class)->vft[COLOR_core__abstract_collection__MapRead__get_or_null]))(var1599, var_mclass); /* get_or_null on <var1599:Map[MClass, Array[nullable MProperty]]>*/
7763 }
7764 var_attrs = var1602;
7765 if (var_attrs == NULL) {
7766 var1603 = 1; /* is null */
7767 } else {
7768 var1603 = 0; /* arg is null but recv is not */
7769 }
7770 if (0) {
7771 var1604 = core___core__Array___core__kernel__Object___61d_61d(var_attrs, ((val*)NULL));
7772 var1603 = var1604;
7773 }
7774 if (var1603){
7775 if (unlikely(varonce1605==NULL)) {
7776 var1606 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
7777 if (likely(varonce1607!=NULL)) {
7778 var1608 = varonce1607;
7779 } else {
7780 var1609 = " = nit_alloc(sizeof(struct instance));";
7781 var1611 = (val*)(38l<<2|1);
7782 var1612 = (val*)(38l<<2|1);
7783 var1613 = (val*)((long)(0)<<2|3);
7784 var1614 = (val*)((long)(0)<<2|3);
7785 var1610 = core__flat___CString___to_s_unsafe(var1609, var1611, var1612, var1613, var1614);
7786 var1608 = var1610;
7787 varonce1607 = var1608;
7788 }
7789 ((struct instance_core__NativeArray*)var1606)->values[1]=var1608;
7790 } else {
7791 var1606 = varonce1605;
7792 varonce1605 = NULL;
7793 }
7794 {
7795 var1615 = ((val*(*)(val* self))(var_res1597->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res1597); /* to_s on <var_res1597:RuntimeVariable>*/
7796 }
7797 ((struct instance_core__NativeArray*)var1606)->values[0]=var1615;
7798 {
7799 var1616 = ((val*(*)(val* self))(var1606->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1606); /* native_to_s on <var1606:NativeArray[String]>*/
7800 }
7801 varonce1605 = var1606;
7802 {
7803 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1616); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
7804 }
7805 } else {
7806 if (unlikely(varonce1617==NULL)) {
7807 var1618 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
7808 if (likely(varonce1619!=NULL)) {
7809 var1620 = varonce1619;
7810 } else {
7811 var1621 = " = nit_alloc(sizeof(struct instance) + ";
7812 var1623 = (val*)(39l<<2|1);
7813 var1624 = (val*)(39l<<2|1);
7814 var1625 = (val*)((long)(0)<<2|3);
7815 var1626 = (val*)((long)(0)<<2|3);
7816 var1622 = core__flat___CString___to_s_unsafe(var1621, var1623, var1624, var1625, var1626);
7817 var1620 = var1622;
7818 varonce1619 = var1620;
7819 }
7820 ((struct instance_core__NativeArray*)var1618)->values[1]=var1620;
7821 if (likely(varonce1627!=NULL)) {
7822 var1628 = varonce1627;
7823 } else {
7824 var1629 = "*sizeof(nitattribute_t));";
7825 var1631 = (val*)(25l<<2|1);
7826 var1632 = (val*)(25l<<2|1);
7827 var1633 = (val*)((long)(0)<<2|3);
7828 var1634 = (val*)((long)(0)<<2|3);
7829 var1630 = core__flat___CString___to_s_unsafe(var1629, var1631, var1632, var1633, var1634);
7830 var1628 = var1630;
7831 varonce1627 = var1628;
7832 }
7833 ((struct instance_core__NativeArray*)var1618)->values[3]=var1628;
7834 } else {
7835 var1618 = varonce1617;
7836 varonce1617 = NULL;
7837 }
7838 {
7839 var1635 = ((val*(*)(val* self))(var_res1597->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res1597); /* to_s on <var_res1597:RuntimeVariable>*/
7840 }
7841 ((struct instance_core__NativeArray*)var1618)->values[0]=var1635;
7842 {
7843 { /* Inline array$AbstractArrayRead$length (var_attrs) on <var_attrs:nullable Array[nullable MProperty](Array[nullable MProperty])> */
7844 var1638 = var_attrs->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_attrs:nullable Array[nullable MProperty](Array[nullable MProperty])> */
7845 var1636 = var1638;
7846 RET_LABEL1637:(void)0;
7847 }
7848 }
7849 var1639 = core__flat___Int___core__abstract_text__Object__to_s(var1636);
7850 ((struct instance_core__NativeArray*)var1618)->values[2]=var1639;
7851 {
7852 var1640 = ((val*(*)(val* self))(var1618->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1618); /* native_to_s on <var1618:NativeArray[String]>*/
7853 }
7854 varonce1617 = var1618;
7855 {
7856 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1640); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
7857 }
7858 }
7859 if (unlikely(varonce1641==NULL)) {
7860 var1642 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
7861 if (likely(varonce1643!=NULL)) {
7862 var1644 = varonce1643;
7863 } else {
7864 var1645 = "class_";
7865 var1647 = (val*)(6l<<2|1);
7866 var1648 = (val*)(6l<<2|1);
7867 var1649 = (val*)((long)(0)<<2|3);
7868 var1650 = (val*)((long)(0)<<2|3);
7869 var1646 = core__flat___CString___to_s_unsafe(var1645, var1647, var1648, var1649, var1650);
7870 var1644 = var1646;
7871 varonce1643 = var1644;
7872 }
7873 ((struct instance_core__NativeArray*)var1642)->values[0]=var1644;
7874 } else {
7875 var1642 = varonce1641;
7876 varonce1641 = NULL;
7877 }
7878 ((struct instance_core__NativeArray*)var1642)->values[1]=var_c_name;
7879 {
7880 var1651 = ((val*(*)(val* self))(var1642->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1642); /* native_to_s on <var1642:NativeArray[String]>*/
7881 }
7882 varonce1641 = var1642;
7883 {
7884 nitc___nitc__AbstractCompilerVisitor___require_declaration(var_v, var1651); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <var_v:SeparateCompilerVisitor>*/
7885 }
7886 if (unlikely(varonce1652==NULL)) {
7887 var1653 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
7888 if (likely(varonce1654!=NULL)) {
7889 var1655 = varonce1654;
7890 } else {
7891 var1656 = "->class = &class_";
7892 var1658 = (val*)(17l<<2|1);
7893 var1659 = (val*)(17l<<2|1);
7894 var1660 = (val*)((long)(0)<<2|3);
7895 var1661 = (val*)((long)(0)<<2|3);
7896 var1657 = core__flat___CString___to_s_unsafe(var1656, var1658, var1659, var1660, var1661);
7897 var1655 = var1657;
7898 varonce1654 = var1655;
7899 }
7900 ((struct instance_core__NativeArray*)var1653)->values[1]=var1655;
7901 if (likely(varonce1662!=NULL)) {
7902 var1663 = varonce1662;
7903 } else {
7904 var1664 = ";";
7905 var1666 = (val*)(1l<<2|1);
7906 var1667 = (val*)(1l<<2|1);
7907 var1668 = (val*)((long)(0)<<2|3);
7908 var1669 = (val*)((long)(0)<<2|3);
7909 var1665 = core__flat___CString___to_s_unsafe(var1664, var1666, var1667, var1668, var1669);
7910 var1663 = var1665;
7911 varonce1662 = var1663;
7912 }
7913 ((struct instance_core__NativeArray*)var1653)->values[3]=var1663;
7914 } else {
7915 var1653 = varonce1652;
7916 varonce1652 = NULL;
7917 }
7918 {
7919 var1670 = ((val*(*)(val* self))(var_res1597->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res1597); /* to_s on <var_res1597:RuntimeVariable>*/
7920 }
7921 ((struct instance_core__NativeArray*)var1653)->values[0]=var1670;
7922 ((struct instance_core__NativeArray*)var1653)->values[2]=var_c_name;
7923 {
7924 var1671 = ((val*(*)(val* self))(var1653->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1653); /* native_to_s on <var1653:NativeArray[String]>*/
7925 }
7926 varonce1652 = var1653;
7927 {
7928 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1671); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
7929 }
7930 if (var_attrs == NULL) {
7931 var1672 = 0; /* is null */
7932 } else {
7933 var1672 = 1; /* arg is null and recv is not */
7934 }
7935 if (0) {
7936 { /* Inline kernel$Object$!= (var_attrs,((val*)NULL)) on <var_attrs:nullable Array[nullable MProperty]> */
7937 var_other = ((val*)NULL);
7938 {
7939 var1675 = ((short int(*)(val* self, val* p0))(var_attrs->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_attrs, var_other); /* == on <var_attrs:nullable Array[nullable MProperty](Array[nullable MProperty])>*/
7940 }
7941 var1676 = !var1675;
7942 var1673 = var1676;
7943 goto RET_LABEL1674;
7944 RET_LABEL1674:(void)0;
7945 }
7946 var1672 = var1673;
7947 }
7948 if (var1672){
7949 {
7950 nitc___nitc__AbstractCompiler___generate_init_attr(self, var_v, var_res1597, var_mtype); /* Direct call abstract_compiler$AbstractCompiler$generate_init_attr on <self:SeparateErasureCompiler>*/
7951 }
7952 {
7953 nitc___nitc__AbstractCompilerVisitor___set_finalizer(var_v, var_res1597); /* Direct call abstract_compiler$AbstractCompilerVisitor$set_finalizer on <var_v:SeparateCompilerVisitor>*/
7954 }
7955 } else {
7956 }
7957 if (unlikely(varonce1677==NULL)) {
7958 var1678 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
7959 if (likely(varonce1679!=NULL)) {
7960 var1680 = varonce1679;
7961 } else {
7962 var1681 = "return ";
7963 var1683 = (val*)(7l<<2|1);
7964 var1684 = (val*)(7l<<2|1);
7965 var1685 = (val*)((long)(0)<<2|3);
7966 var1686 = (val*)((long)(0)<<2|3);
7967 var1682 = core__flat___CString___to_s_unsafe(var1681, var1683, var1684, var1685, var1686);
7968 var1680 = var1682;
7969 varonce1679 = var1680;
7970 }
7971 ((struct instance_core__NativeArray*)var1678)->values[0]=var1680;
7972 if (likely(varonce1687!=NULL)) {
7973 var1688 = varonce1687;
7974 } else {
7975 var1689 = ";";
7976 var1691 = (val*)(1l<<2|1);
7977 var1692 = (val*)(1l<<2|1);
7978 var1693 = (val*)((long)(0)<<2|3);
7979 var1694 = (val*)((long)(0)<<2|3);
7980 var1690 = core__flat___CString___to_s_unsafe(var1689, var1691, var1692, var1693, var1694);
7981 var1688 = var1690;
7982 varonce1687 = var1688;
7983 }
7984 ((struct instance_core__NativeArray*)var1678)->values[2]=var1688;
7985 } else {
7986 var1678 = varonce1677;
7987 varonce1677 = NULL;
7988 }
7989 {
7990 var1695 = ((val*(*)(val* self))(var_res1597->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res1597); /* to_s on <var_res1597:RuntimeVariable>*/
7991 }
7992 ((struct instance_core__NativeArray*)var1678)->values[1]=var1695;
7993 {
7994 var1696 = ((val*(*)(val* self))(var1678->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1678); /* native_to_s on <var1678:NativeArray[String]>*/
7995 }
7996 varonce1677 = var1678;
7997 {
7998 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1696); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
7999 }
8000 }
8001 if (likely(varonce1697!=NULL)) {
8002 var1698 = varonce1697;
8003 } else {
8004 var1699 = "}";
8005 var1701 = (val*)(1l<<2|1);
8006 var1702 = (val*)(1l<<2|1);
8007 var1703 = (val*)((long)(0)<<2|3);
8008 var1704 = (val*)((long)(0)<<2|3);
8009 var1700 = core__flat___CString___to_s_unsafe(var1699, var1701, var1702, var1703, var1704);
8010 var1698 = var1700;
8011 varonce1697 = var1698;
8012 }
8013 {
8014 nitc___nitc__AbstractCompilerVisitor___add(var_v, var1698); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:SeparateCompilerVisitor>*/
8015 }
8016 RET_LABEL:;
8017 }
8018 /* method separate_erasure_compiler$SeparateErasureCompiler$build_class_vts_table for (self: SeparateErasureCompiler, MClass): Bool */
8019 short int nitc___nitc__SeparateErasureCompiler___build_class_vts_table(val* self, val* p0) {
8020 short int var /* : Bool */;
8021 val* var_mclass /* var mclass: MClass */;
8022 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
8023 val* var3 /* : Map[MClass, Array[nullable MPropDef]] */;
8024 val* var4 /* : nullable Object */;
8025 short int var5 /* : Bool */;
8026 val* var6 /* : NativeArray[String] */;
8027 static val* varonce;
8028 static val* varonce7;
8029 val* var8 /* : String */;
8030 char* var9 /* : CString */;
8031 val* var10 /* : String */;
8032 val* var11 /* : nullable Int */;
8033 val* var12 /* : nullable Int */;
8034 val* var13 /* : nullable Bool */;
8035 val* var14 /* : nullable Bool */;
8036 val* var15 /* : String */;
8037 val* var16 /* : String */;
8038 val* var18 /* : NativeArray[String] */;
8039 static val* varonce17;
8040 static val* varonce19;
8041 val* var20 /* : String */;
8042 char* var21 /* : CString */;
8043 val* var22 /* : String */;
8044 val* var23 /* : nullable Int */;
8045 val* var24 /* : nullable Int */;
8046 val* var25 /* : nullable Bool */;
8047 val* var26 /* : nullable Bool */;
8048 static val* varonce27;
8049 val* var28 /* : String */;
8050 char* var29 /* : CString */;
8051 val* var30 /* : String */;
8052 val* var31 /* : nullable Int */;
8053 val* var32 /* : nullable Int */;
8054 val* var33 /* : nullable Bool */;
8055 val* var34 /* : nullable Bool */;
8056 val* var35 /* : String */;
8057 val* var36 /* : String */;
8058 val* var37 /* : SeparateCompilerVisitor */;
8059 val* var_v /* var v: SeparateCompilerVisitor */;
8060 val* var39 /* : NativeArray[String] */;
8061 static val* varonce38;
8062 static val* varonce40;
8063 val* var41 /* : String */;
8064 char* var42 /* : CString */;
8065 val* var43 /* : String */;
8066 val* var44 /* : nullable Int */;
8067 val* var45 /* : nullable Int */;
8068 val* var46 /* : nullable Bool */;
8069 val* var47 /* : nullable Bool */;
8070 static val* varonce48;
8071 val* var49 /* : String */;
8072 char* var50 /* : CString */;
8073 val* var51 /* : String */;
8074 val* var52 /* : nullable Int */;
8075 val* var53 /* : nullable Int */;
8076 val* var54 /* : nullable Bool */;
8077 val* var55 /* : nullable Bool */;
8078 val* var56 /* : String */;
8079 val* var57 /* : String */;
8080 static val* varonce58;
8081 val* var59 /* : String */;
8082 char* var60 /* : CString */;
8083 val* var61 /* : String */;
8084 val* var62 /* : nullable Int */;
8085 val* var63 /* : nullable Int */;
8086 val* var64 /* : nullable Bool */;
8087 val* var65 /* : nullable Bool */;
8088 static val* varonce66;
8089 val* var67 /* : String */;
8090 char* var68 /* : CString */;
8091 val* var69 /* : String */;
8092 val* var70 /* : nullable Int */;
8093 val* var71 /* : nullable Int */;
8094 val* var72 /* : nullable Bool */;
8095 val* var73 /* : nullable Bool */;
8096 val* var74 /* : Map[MClass, Array[nullable MPropDef]] */;
8097 val* var76 /* : Map[MClass, Array[nullable MPropDef]] */;
8098 val* var77 /* : nullable Object */;
8099 val* var_ /* var : Array[nullable MPropDef] */;
8100 val* var78 /* : IndexedIterator[nullable Object] */;
8101 val* var_79 /* var : IndexedIterator[nullable MPropDef] */;
8102 short int var80 /* : Bool */;
8103 val* var81 /* : nullable Object */;
8104 val* var_vt /* var vt: nullable MPropDef */;
8105 short int var82 /* : Bool */;
8106 short int var83 /* : Bool */;
8107 val* var_other /* var other: nullable Object */;
8108 short int var85 /* : Bool */;
8109 short int var87 /* : Bool */;
8110 static val* varonce88;
8111 val* var89 /* : String */;
8112 char* var90 /* : CString */;
8113 val* var91 /* : String */;
8114 val* var92 /* : nullable Int */;
8115 val* var93 /* : nullable Int */;
8116 val* var94 /* : nullable Bool */;
8117 val* var95 /* : nullable Bool */;
8118 long var_is_null /* var is_null: Int */;
8119 val* var96 /* : MClassDef */;
8120 val* var98 /* : MClassDef */;
8121 val* var99 /* : MClassType */;
8122 val* var101 /* : MClassType */;
8123 short int var102 /* : Bool */;
8124 int cltype;
8125 int idtype;
8126 const char* var_class_name;
8127 val* var103 /* : nullable MType */;
8128 val* var105 /* : nullable MType */;
8129 val* var106 /* : MType */;
8130 val* var_bound /* var bound: MType */;
8131 short int var107 /* : Bool */;
8132 int cltype108;
8133 int idtype109;
8134 val* var110 /* : MClassDef */;
8135 val* var112 /* : MClassDef */;
8136 val* var113 /* : MClassType */;
8137 val* var115 /* : MClassType */;
8138 val* var116 /* : MType */;
8139 val* var118 /* : MType */;
8140 val* var119 /* : MType */;
8141 short int var121 /* : Bool */;
8142 int cltype122;
8143 int idtype123;
8144 const char* var_class_name124;
8145 val* var125 /* : MClass */;
8146 val* var127 /* : MClass */;
8147 val* var_vtclass /* var vtclass: MClass */;
8148 val* var129 /* : NativeArray[String] */;
8149 static val* varonce128;
8150 static val* varonce130;
8151 val* var131 /* : String */;
8152 char* var132 /* : CString */;
8153 val* var133 /* : String */;
8154 val* var134 /* : nullable Int */;
8155 val* var135 /* : nullable Int */;
8156 val* var136 /* : nullable Bool */;
8157 val* var137 /* : nullable Bool */;
8158 val* var138 /* : String */;
8159 val* var139 /* : String */;
8160 val* var141 /* : NativeArray[String] */;
8161 static val* varonce140;
8162 static val* varonce142;
8163 val* var143 /* : String */;
8164 char* var144 /* : CString */;
8165 val* var145 /* : String */;
8166 val* var146 /* : nullable Int */;
8167 val* var147 /* : nullable Int */;
8168 val* var148 /* : nullable Bool */;
8169 val* var149 /* : nullable Bool */;
8170 static val* varonce150;
8171 val* var151 /* : String */;
8172 char* var152 /* : CString */;
8173 val* var153 /* : String */;
8174 val* var154 /* : nullable Int */;
8175 val* var155 /* : nullable Int */;
8176 val* var156 /* : nullable Bool */;
8177 val* var157 /* : nullable Bool */;
8178 static val* varonce158;
8179 val* var159 /* : String */;
8180 char* var160 /* : CString */;
8181 val* var161 /* : String */;
8182 val* var162 /* : nullable Int */;
8183 val* var163 /* : nullable Int */;
8184 val* var164 /* : nullable Bool */;
8185 val* var165 /* : nullable Bool */;
8186 static val* varonce166;
8187 val* var167 /* : String */;
8188 char* var168 /* : CString */;
8189 val* var169 /* : String */;
8190 val* var170 /* : nullable Int */;
8191 val* var171 /* : nullable Int */;
8192 val* var172 /* : nullable Bool */;
8193 val* var173 /* : nullable Bool */;
8194 val* var174 /* : String */;
8195 val* var175 /* : String */;
8196 val* var176 /* : String */;
8197 val* var177 /* : String */;
8198 static val* varonce178;
8199 val* var179 /* : String */;
8200 char* var180 /* : CString */;
8201 val* var181 /* : String */;
8202 val* var182 /* : nullable Int */;
8203 val* var183 /* : nullable Int */;
8204 val* var184 /* : nullable Bool */;
8205 val* var185 /* : nullable Bool */;
8206 static val* varonce186;
8207 val* var187 /* : String */;
8208 char* var188 /* : CString */;
8209 val* var189 /* : String */;
8210 val* var190 /* : nullable Int */;
8211 val* var191 /* : nullable Int */;
8212 val* var192 /* : nullable Bool */;
8213 val* var193 /* : nullable Bool */;
8214 var_mclass = p0;
8215 {
8216 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$vt_tables (self) on <self:SeparateErasureCompiler> */
8217 var3 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___vt_tables].val; /* _vt_tables on <self:SeparateErasureCompiler> */
8218 if (unlikely(var3 == NULL)) {
8219 if(catchStack.cursor >= 0){
8220 longjmp(catchStack.envs[catchStack.cursor], 1);
8221 }
8222 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_tables");
8223 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 428);
8224 fatal_exit(1);
8225 }
8226 var1 = var3;
8227 RET_LABEL2:(void)0;
8228 }
8229 }
8230 {
8231 var4 = ((val*(*)(val* self, val* p0))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var1, var_mclass); /* [] on <var1:Map[MClass, Array[nullable MPropDef]]>*/
8232 }
8233 {
8234 var5 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var4);
8235 }
8236 if (var5){
8237 var = 0;
8238 goto RET_LABEL;
8239 } else {
8240 }
8241 if (unlikely(varonce==NULL)) {
8242 var6 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
8243 if (likely(varonce7!=NULL)) {
8244 var8 = varonce7;
8245 } else {
8246 var9 = "vts_table_";
8247 var11 = (val*)(10l<<2|1);
8248 var12 = (val*)(10l<<2|1);
8249 var13 = (val*)((long)(0)<<2|3);
8250 var14 = (val*)((long)(0)<<2|3);
8251 var10 = core__flat___CString___to_s_unsafe(var9, var11, var12, var13, var14);
8252 var8 = var10;
8253 varonce7 = var8;
8254 }
8255 ((struct instance_core__NativeArray*)var6)->values[0]=var8;
8256 } else {
8257 var6 = varonce;
8258 varonce = NULL;
8259 }
8260 {
8261 var15 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var_mclass);
8262 }
8263 ((struct instance_core__NativeArray*)var6)->values[1]=var15;
8264 {
8265 var16 = ((val*(*)(val* self))(var6->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var6); /* native_to_s on <var6:NativeArray[String]>*/
8266 }
8267 varonce = var6;
8268 if (unlikely(varonce17==NULL)) {
8269 var18 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
8270 if (likely(varonce19!=NULL)) {
8271 var20 = varonce19;
8272 } else {
8273 var21 = "extern const struct vts_table vts_table_";
8274 var23 = (val*)(40l<<2|1);
8275 var24 = (val*)(40l<<2|1);
8276 var25 = (val*)((long)(0)<<2|3);
8277 var26 = (val*)((long)(0)<<2|3);
8278 var22 = core__flat___CString___to_s_unsafe(var21, var23, var24, var25, var26);
8279 var20 = var22;
8280 varonce19 = var20;
8281 }
8282 ((struct instance_core__NativeArray*)var18)->values[0]=var20;
8283 if (likely(varonce27!=NULL)) {
8284 var28 = varonce27;
8285 } else {
8286 var29 = ";";
8287 var31 = (val*)(1l<<2|1);
8288 var32 = (val*)(1l<<2|1);
8289 var33 = (val*)((long)(0)<<2|3);
8290 var34 = (val*)((long)(0)<<2|3);
8291 var30 = core__flat___CString___to_s_unsafe(var29, var31, var32, var33, var34);
8292 var28 = var30;
8293 varonce27 = var28;
8294 }
8295 ((struct instance_core__NativeArray*)var18)->values[2]=var28;
8296 } else {
8297 var18 = varonce17;
8298 varonce17 = NULL;
8299 }
8300 {
8301 var35 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var_mclass);
8302 }
8303 ((struct instance_core__NativeArray*)var18)->values[1]=var35;
8304 {
8305 var36 = ((val*(*)(val* self))(var18->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var18); /* native_to_s on <var18:NativeArray[String]>*/
8306 }
8307 varonce17 = var18;
8308 {
8309 nitc___nitc__AbstractCompiler___provide_declaration(self, var16, var36); /* Direct call abstract_compiler$AbstractCompiler$provide_declaration on <self:SeparateErasureCompiler>*/
8310 }
8311 {
8312 var37 = nitc___nitc__SeparateErasureCompiler___nitc__abstract_compiler__AbstractCompiler__new_visitor(self);
8313 }
8314 var_v = var37;
8315 if (unlikely(varonce38==NULL)) {
8316 var39 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
8317 if (likely(varonce40!=NULL)) {
8318 var41 = varonce40;
8319 } else {
8320 var42 = "const struct vts_table vts_table_";
8321 var44 = (val*)(33l<<2|1);
8322 var45 = (val*)(33l<<2|1);
8323 var46 = (val*)((long)(0)<<2|3);
8324 var47 = (val*)((long)(0)<<2|3);
8325 var43 = core__flat___CString___to_s_unsafe(var42, var44, var45, var46, var47);
8326 var41 = var43;
8327 varonce40 = var41;
8328 }
8329 ((struct instance_core__NativeArray*)var39)->values[0]=var41;
8330 if (likely(varonce48!=NULL)) {
8331 var49 = varonce48;
8332 } else {
8333 var50 = " = {";
8334 var52 = (val*)(4l<<2|1);
8335 var53 = (val*)(4l<<2|1);
8336 var54 = (val*)((long)(0)<<2|3);
8337 var55 = (val*)((long)(0)<<2|3);
8338 var51 = core__flat___CString___to_s_unsafe(var50, var52, var53, var54, var55);
8339 var49 = var51;
8340 varonce48 = var49;
8341 }
8342 ((struct instance_core__NativeArray*)var39)->values[2]=var49;
8343 } else {
8344 var39 = varonce38;
8345 varonce38 = NULL;
8346 }
8347 {
8348 var56 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var_mclass);
8349 }
8350 ((struct instance_core__NativeArray*)var39)->values[1]=var56;
8351 {
8352 var57 = ((val*(*)(val* self))(var39->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var39); /* native_to_s on <var39:NativeArray[String]>*/
8353 }
8354 varonce38 = var39;
8355 {
8356 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var57); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
8357 }
8358 if (likely(varonce58!=NULL)) {
8359 var59 = varonce58;
8360 } else {
8361 var60 = "0, /* dummy */";
8362 var62 = (val*)(14l<<2|1);
8363 var63 = (val*)(14l<<2|1);
8364 var64 = (val*)((long)(0)<<2|3);
8365 var65 = (val*)((long)(0)<<2|3);
8366 var61 = core__flat___CString___to_s_unsafe(var60, var62, var63, var64, var65);
8367 var59 = var61;
8368 varonce58 = var59;
8369 }
8370 {
8371 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var59); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
8372 }
8373 if (likely(varonce66!=NULL)) {
8374 var67 = varonce66;
8375 } else {
8376 var68 = "{";
8377 var70 = (val*)(1l<<2|1);
8378 var71 = (val*)(1l<<2|1);
8379 var72 = (val*)((long)(0)<<2|3);
8380 var73 = (val*)((long)(0)<<2|3);
8381 var69 = core__flat___CString___to_s_unsafe(var68, var70, var71, var72, var73);
8382 var67 = var69;
8383 varonce66 = var67;
8384 }
8385 {
8386 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var67); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
8387 }
8388 {
8389 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$vt_tables (self) on <self:SeparateErasureCompiler> */
8390 var76 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___vt_tables].val; /* _vt_tables on <self:SeparateErasureCompiler> */
8391 if (unlikely(var76 == NULL)) {
8392 if(catchStack.cursor >= 0){
8393 longjmp(catchStack.envs[catchStack.cursor], 1);
8394 }
8395 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_tables");
8396 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 428);
8397 fatal_exit(1);
8398 }
8399 var74 = var76;
8400 RET_LABEL75:(void)0;
8401 }
8402 }
8403 {
8404 var77 = ((val*(*)(val* self, val* p0))((((long)var74&3)?class_info[((long)var74&3)]:var74->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var74, var_mclass); /* [] on <var74:Map[MClass, Array[nullable MPropDef]]>*/
8405 }
8406 var_ = var77;
8407 {
8408 var78 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
8409 }
8410 var_79 = var78;
8411 for(;;) {
8412 {
8413 var80 = ((short int(*)(val* self))((((long)var_79&3)?class_info[((long)var_79&3)]:var_79->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_79); /* is_ok on <var_79:IndexedIterator[nullable MPropDef]>*/
8414 }
8415 if (var80){
8416 } else {
8417 goto BREAK_label;
8418 }
8419 {
8420 var81 = ((val*(*)(val* self))((((long)var_79&3)?class_info[((long)var_79&3)]:var_79->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_79); /* item on <var_79:IndexedIterator[nullable MPropDef]>*/
8421 }
8422 var_vt = var81;
8423 if (var_vt == NULL) {
8424 var82 = 1; /* is null */
8425 } else {
8426 var82 = 0; /* arg is null but recv is not */
8427 }
8428 if (0) {
8429 { /* Inline kernel$Object$== (var_vt,((val*)NULL)) on <var_vt:nullable MPropDef> */
8430 var_other = ((val*)NULL);
8431 {
8432 { /* Inline kernel$Object$is_same_instance (var_vt,var_other) on <var_vt:nullable MPropDef(MPropDef)> */
8433 var87 = var_vt == var_other;
8434 var85 = var87;
8435 goto RET_LABEL86;
8436 RET_LABEL86:(void)0;
8437 }
8438 }
8439 var83 = var85;
8440 goto RET_LABEL84;
8441 RET_LABEL84:(void)0;
8442 }
8443 var82 = var83;
8444 }
8445 if (var82){
8446 if (likely(varonce88!=NULL)) {
8447 var89 = varonce88;
8448 } else {
8449 var90 = "{-1, NULL}, /* empty */";
8450 var92 = (val*)(23l<<2|1);
8451 var93 = (val*)(23l<<2|1);
8452 var94 = (val*)((long)(0)<<2|3);
8453 var95 = (val*)((long)(0)<<2|3);
8454 var91 = core__flat___CString___to_s_unsafe(var90, var92, var93, var94, var95);
8455 var89 = var91;
8456 varonce88 = var89;
8457 }
8458 {
8459 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var89); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
8460 }
8461 } else {
8462 var_is_null = 0l;
8463 {
8464 { /* Inline model$MClass$intro (var_mclass) on <var_mclass:MClass> */
8465 var98 = var_mclass->attrs[COLOR_nitc__model__MClass___intro].val; /* _intro on <var_mclass:MClass> */
8466 if (unlikely(var98 == NULL)) {
8467 if(catchStack.cursor >= 0){
8468 longjmp(catchStack.envs[catchStack.cursor], 1);
8469 }
8470 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
8471 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 496);
8472 fatal_exit(1);
8473 }
8474 var96 = var98;
8475 RET_LABEL97:(void)0;
8476 }
8477 }
8478 {
8479 { /* Inline model$MClassDef$bound_mtype (var96) on <var96:MClassDef> */
8480 var101 = var96->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var96:MClassDef> */
8481 if (unlikely(var101 == NULL)) {
8482 if(catchStack.cursor >= 0){
8483 longjmp(catchStack.envs[catchStack.cursor], 1);
8484 }
8485 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8486 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
8487 fatal_exit(1);
8488 }
8489 var99 = var101;
8490 RET_LABEL100:(void)0;
8491 }
8492 }
8493 /* <var_vt:nullable MPropDef(MPropDef)> isa MVirtualTypeDef */
8494 cltype = type_nitc__MVirtualTypeDef.color;
8495 idtype = type_nitc__MVirtualTypeDef.id;
8496 if(cltype >= var_vt->type->table_size) {
8497 var102 = 0;
8498 } else {
8499 var102 = var_vt->type->type_table[cltype] == idtype;
8500 }
8501 if (unlikely(!var102)) {
8502 var_class_name = var_vt == NULL ? "null" : var_vt->type->name;
8503 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MVirtualTypeDef", var_class_name);
8504 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 389);
8505 fatal_exit(1);
8506 }
8507 {
8508 { /* Inline model$MVirtualTypeDef$bound (var_vt) on <var_vt:nullable MPropDef(MVirtualTypeDef)> */
8509 var105 = var_vt->attrs[COLOR_nitc__model__MVirtualTypeDef___bound].val; /* _bound on <var_vt:nullable MPropDef(MVirtualTypeDef)> */
8510 var103 = var105;
8511 RET_LABEL104:(void)0;
8512 }
8513 }
8514 {
8515 var106 = nitc___nitc__SeparateErasureCompiler___retrieve_vt_bound(self, var99, var103);
8516 }
8517 var_bound = var106;
8518 for(;;) {
8519 /* <var_bound:MType> isa MNullableType */
8520 cltype108 = type_nitc__MNullableType.color;
8521 idtype109 = type_nitc__MNullableType.id;
8522 if(cltype108 >= var_bound->type->table_size) {
8523 var107 = 0;
8524 } else {
8525 var107 = var_bound->type->type_table[cltype108] == idtype109;
8526 }
8527 if (var107){
8528 {
8529 { /* Inline model$MClass$intro (var_mclass) on <var_mclass:MClass> */
8530 var112 = var_mclass->attrs[COLOR_nitc__model__MClass___intro].val; /* _intro on <var_mclass:MClass> */
8531 if (unlikely(var112 == NULL)) {
8532 if(catchStack.cursor >= 0){
8533 longjmp(catchStack.envs[catchStack.cursor], 1);
8534 }
8535 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
8536 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 496);
8537 fatal_exit(1);
8538 }
8539 var110 = var112;
8540 RET_LABEL111:(void)0;
8541 }
8542 }
8543 {
8544 { /* Inline model$MClassDef$bound_mtype (var110) on <var110:MClassDef> */
8545 var115 = var110->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var110:MClassDef> */
8546 if (unlikely(var115 == NULL)) {
8547 if(catchStack.cursor >= 0){
8548 longjmp(catchStack.envs[catchStack.cursor], 1);
8549 }
8550 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8551 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
8552 fatal_exit(1);
8553 }
8554 var113 = var115;
8555 RET_LABEL114:(void)0;
8556 }
8557 }
8558 {
8559 { /* Inline model$MProxyType$mtype (var_bound) on <var_bound:MType(MNullableType)> */
8560 var118 = var_bound->attrs[COLOR_nitc__model__MProxyType___mtype].val; /* _mtype on <var_bound:MType(MNullableType)> */
8561 if (unlikely(var118 == NULL)) {
8562 if(catchStack.cursor >= 0){
8563 longjmp(catchStack.envs[catchStack.cursor], 1);
8564 }
8565 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8566 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1689);
8567 fatal_exit(1);
8568 }
8569 var116 = var118;
8570 RET_LABEL117:(void)0;
8571 }
8572 }
8573 {
8574 var119 = nitc___nitc__SeparateErasureCompiler___retrieve_vt_bound(self, var113, var116);
8575 }
8576 var_bound = var119;
8577 var_is_null = 1l;
8578 } else {
8579 goto BREAK_label120;
8580 }
8581 }
8582 BREAK_label120: (void)0;
8583 /* <var_bound:MType> isa MClassType */
8584 cltype122 = type_nitc__MClassType.color;
8585 idtype123 = type_nitc__MClassType.id;
8586 if(cltype122 >= var_bound->type->table_size) {
8587 var121 = 0;
8588 } else {
8589 var121 = var_bound->type->type_table[cltype122] == idtype123;
8590 }
8591 if (unlikely(!var121)) {
8592 var_class_name124 = var_bound == NULL ? "null" : var_bound->type->name;
8593 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name124);
8594 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 394);
8595 fatal_exit(1);
8596 }
8597 {
8598 { /* Inline model$MClassType$mclass (var_bound) on <var_bound:MType(MClassType)> */
8599 var127 = var_bound->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_bound:MType(MClassType)> */
8600 if (unlikely(var127 == NULL)) {
8601 if(catchStack.cursor >= 0){
8602 longjmp(catchStack.envs[catchStack.cursor], 1);
8603 }
8604 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
8605 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
8606 fatal_exit(1);
8607 }
8608 var125 = var127;
8609 RET_LABEL126:(void)0;
8610 }
8611 }
8612 var_vtclass = var125;
8613 if (unlikely(varonce128==NULL)) {
8614 var129 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
8615 if (likely(varonce130!=NULL)) {
8616 var131 = varonce130;
8617 } else {
8618 var132 = "class_";
8619 var134 = (val*)(6l<<2|1);
8620 var135 = (val*)(6l<<2|1);
8621 var136 = (val*)((long)(0)<<2|3);
8622 var137 = (val*)((long)(0)<<2|3);
8623 var133 = core__flat___CString___to_s_unsafe(var132, var134, var135, var136, var137);
8624 var131 = var133;
8625 varonce130 = var131;
8626 }
8627 ((struct instance_core__NativeArray*)var129)->values[0]=var131;
8628 } else {
8629 var129 = varonce128;
8630 varonce128 = NULL;
8631 }
8632 {
8633 var138 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var_vtclass);
8634 }
8635 ((struct instance_core__NativeArray*)var129)->values[1]=var138;
8636 {
8637 var139 = ((val*(*)(val* self))(var129->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var129); /* native_to_s on <var129:NativeArray[String]>*/
8638 }
8639 varonce128 = var129;
8640 {
8641 nitc___nitc__AbstractCompilerVisitor___require_declaration(var_v, var139); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <var_v:SeparateCompilerVisitor>*/
8642 }
8643 if (unlikely(varonce140==NULL)) {
8644 var141 = NEW_core__NativeArray((int)7l, &type_core__NativeArray__core__String);
8645 if (likely(varonce142!=NULL)) {
8646 var143 = varonce142;
8647 } else {
8648 var144 = "{";
8649 var146 = (val*)(1l<<2|1);
8650 var147 = (val*)(1l<<2|1);
8651 var148 = (val*)((long)(0)<<2|3);
8652 var149 = (val*)((long)(0)<<2|3);
8653 var145 = core__flat___CString___to_s_unsafe(var144, var146, var147, var148, var149);
8654 var143 = var145;
8655 varonce142 = var143;
8656 }
8657 ((struct instance_core__NativeArray*)var141)->values[0]=var143;
8658 if (likely(varonce150!=NULL)) {
8659 var151 = varonce150;
8660 } else {
8661 var152 = ", &class_";
8662 var154 = (val*)(9l<<2|1);
8663 var155 = (val*)(9l<<2|1);
8664 var156 = (val*)((long)(0)<<2|3);
8665 var157 = (val*)((long)(0)<<2|3);
8666 var153 = core__flat___CString___to_s_unsafe(var152, var154, var155, var156, var157);
8667 var151 = var153;
8668 varonce150 = var151;
8669 }
8670 ((struct instance_core__NativeArray*)var141)->values[2]=var151;
8671 if (likely(varonce158!=NULL)) {
8672 var159 = varonce158;
8673 } else {
8674 var160 = "}, /* ";
8675 var162 = (val*)(6l<<2|1);
8676 var163 = (val*)(6l<<2|1);
8677 var164 = (val*)((long)(0)<<2|3);
8678 var165 = (val*)((long)(0)<<2|3);
8679 var161 = core__flat___CString___to_s_unsafe(var160, var162, var163, var164, var165);
8680 var159 = var161;
8681 varonce158 = var159;
8682 }
8683 ((struct instance_core__NativeArray*)var141)->values[4]=var159;
8684 if (likely(varonce166!=NULL)) {
8685 var167 = varonce166;
8686 } else {
8687 var168 = " */";
8688 var170 = (val*)(3l<<2|1);
8689 var171 = (val*)(3l<<2|1);
8690 var172 = (val*)((long)(0)<<2|3);
8691 var173 = (val*)((long)(0)<<2|3);
8692 var169 = core__flat___CString___to_s_unsafe(var168, var170, var171, var172, var173);
8693 var167 = var169;
8694 varonce166 = var167;
8695 }
8696 ((struct instance_core__NativeArray*)var141)->values[6]=var167;
8697 } else {
8698 var141 = varonce140;
8699 varonce140 = NULL;
8700 }
8701 var174 = core__flat___Int___core__abstract_text__Object__to_s(var_is_null);
8702 ((struct instance_core__NativeArray*)var141)->values[1]=var174;
8703 {
8704 var175 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var_vtclass);
8705 }
8706 ((struct instance_core__NativeArray*)var141)->values[3]=var175;
8707 {
8708 var176 = ((val*(*)(val* self))(var_vt->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_vt); /* to_s on <var_vt:nullable MPropDef(MPropDef)>*/
8709 }
8710 ((struct instance_core__NativeArray*)var141)->values[5]=var176;
8711 {
8712 var177 = ((val*(*)(val* self))(var141->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var141); /* native_to_s on <var141:NativeArray[String]>*/
8713 }
8714 varonce140 = var141;
8715 {
8716 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var177); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
8717 }
8718 }
8719 {
8720 ((void(*)(val* self))((((long)var_79&3)?class_info[((long)var_79&3)]:var_79->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_79); /* next on <var_79:IndexedIterator[nullable MPropDef]>*/
8721 }
8722 }
8723 BREAK_label: (void)0;
8724 {
8725 ((void(*)(val* self))((((long)var_79&3)?class_info[((long)var_79&3)]:var_79->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_79); /* finish on <var_79:IndexedIterator[nullable MPropDef]>*/
8726 }
8727 if (likely(varonce178!=NULL)) {
8728 var179 = varonce178;
8729 } else {
8730 var180 = "},";
8731 var182 = (val*)(2l<<2|1);
8732 var183 = (val*)(2l<<2|1);
8733 var184 = (val*)((long)(0)<<2|3);
8734 var185 = (val*)((long)(0)<<2|3);
8735 var181 = core__flat___CString___to_s_unsafe(var180, var182, var183, var184, var185);
8736 var179 = var181;
8737 varonce178 = var179;
8738 }
8739 {
8740 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var179); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
8741 }
8742 if (likely(varonce186!=NULL)) {
8743 var187 = varonce186;
8744 } else {
8745 var188 = "};";
8746 var190 = (val*)(2l<<2|1);
8747 var191 = (val*)(2l<<2|1);
8748 var192 = (val*)((long)(0)<<2|3);
8749 var193 = (val*)((long)(0)<<2|3);
8750 var189 = core__flat___CString___to_s_unsafe(var188, var190, var191, var192, var193);
8751 var187 = var189;
8752 varonce186 = var187;
8753 }
8754 {
8755 nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var187); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <var_v:SeparateCompilerVisitor>*/
8756 }
8757 var = 1;
8758 goto RET_LABEL;
8759 RET_LABEL:;
8760 return var;
8761 }
8762 /* method separate_erasure_compiler$SeparateErasureCompiler$retrieve_vt_bound for (self: SeparateErasureCompiler, MClassType, nullable MType): MType */
8763 val* nitc___nitc__SeparateErasureCompiler___retrieve_vt_bound(val* self, val* p0, val* p1) {
8764 val* var /* : MType */;
8765 val* var_anchor /* var anchor: MClassType */;
8766 val* var_mtype /* var mtype: nullable MType */;
8767 short int var1 /* : Bool */;
8768 short int var2 /* : Bool */;
8769 val* var_other /* var other: nullable Object */;
8770 short int var4 /* : Bool */;
8771 short int var6 /* : Bool */;
8772 val* var7 /* : Sys */;
8773 static val* varonce;
8774 val* var8 /* : String */;
8775 char* var9 /* : CString */;
8776 val* var10 /* : String */;
8777 val* var11 /* : nullable Int */;
8778 val* var12 /* : nullable Int */;
8779 val* var13 /* : nullable Bool */;
8780 val* var14 /* : nullable Bool */;
8781 short int var15 /* : Bool */;
8782 int cltype;
8783 int idtype;
8784 val* var16 /* : MModule */;
8785 val* var18 /* : MModule */;
8786 val* var19 /* : MType */;
8787 short int var20 /* : Bool */;
8788 int cltype21;
8789 int idtype22;
8790 val* var23 /* : MModule */;
8791 val* var25 /* : MModule */;
8792 val* var26 /* : MType */;
8793 var_anchor = p0;
8794 var_mtype = p1;
8795 if (var_mtype == NULL) {
8796 var1 = 1; /* is null */
8797 } else {
8798 var1 = 0; /* arg is null but recv is not */
8799 }
8800 if (0) {
8801 { /* Inline kernel$Object$== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
8802 var_other = ((val*)NULL);
8803 {
8804 { /* Inline kernel$Object$is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
8805 var6 = var_mtype == var_other;
8806 var4 = var6;
8807 goto RET_LABEL5;
8808 RET_LABEL5:(void)0;
8809 }
8810 }
8811 var2 = var4;
8812 goto RET_LABEL3;
8813 RET_LABEL3:(void)0;
8814 }
8815 var1 = var2;
8816 }
8817 if (var1){
8818 var7 = glob_sys;
8819 if (likely(varonce!=NULL)) {
8820 var8 = varonce;
8821 } else {
8822 var9 = "NOT YET IMPLEMENTED: retrieve_vt_bound on null";
8823 var11 = (val*)(46l<<2|1);
8824 var12 = (val*)(46l<<2|1);
8825 var13 = (val*)((long)(0)<<2|3);
8826 var14 = (val*)((long)(0)<<2|3);
8827 var10 = core__flat___CString___to_s_unsafe(var9, var11, var12, var13, var14);
8828 var8 = var10;
8829 varonce = var8;
8830 }
8831 {
8832 core__file___Sys___print(var7, var8); /* Direct call file$Sys$print on <var7:Sys>*/
8833 }
8834 if(catchStack.cursor >= 0){
8835 longjmp(catchStack.envs[catchStack.cursor], 1);
8836 }
8837 PRINT_ERROR("Runtime error: %s", "Aborted");
8838 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 407);
8839 fatal_exit(1);
8840 } else {
8841 }
8842 /* <var_mtype:nullable MType(MType)> isa MVirtualType */
8843 cltype = type_nitc__MVirtualType.color;
8844 idtype = type_nitc__MVirtualType.id;
8845 if(cltype >= var_mtype->type->table_size) {
8846 var15 = 0;
8847 } else {
8848 var15 = var_mtype->type->type_table[cltype] == idtype;
8849 }
8850 if (var15){
8851 {
8852 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:SeparateErasureCompiler> */
8853 var18 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
8854 if (unlikely(var18 == NULL)) {
8855 if(catchStack.cursor >= 0){
8856 longjmp(catchStack.envs[catchStack.cursor], 1);
8857 }
8858 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
8859 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
8860 fatal_exit(1);
8861 }
8862 var16 = var18;
8863 RET_LABEL17:(void)0;
8864 }
8865 }
8866 {
8867 var19 = nitc___nitc__MType___anchor_to(var_mtype, var16, var_anchor);
8868 }
8869 var = var19;
8870 goto RET_LABEL;
8871 } else {
8872 /* <var_mtype:nullable MType(MType)> isa MParameterType */
8873 cltype21 = type_nitc__MParameterType.color;
8874 idtype22 = type_nitc__MParameterType.id;
8875 if(cltype21 >= var_mtype->type->table_size) {
8876 var20 = 0;
8877 } else {
8878 var20 = var_mtype->type->type_table[cltype21] == idtype22;
8879 }
8880 if (var20){
8881 {
8882 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:SeparateErasureCompiler> */
8883 var25 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
8884 if (unlikely(var25 == NULL)) {
8885 if(catchStack.cursor >= 0){
8886 longjmp(catchStack.envs[catchStack.cursor], 1);
8887 }
8888 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
8889 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
8890 fatal_exit(1);
8891 }
8892 var23 = var25;
8893 RET_LABEL24:(void)0;
8894 }
8895 }
8896 {
8897 var26 = nitc___nitc__MType___anchor_to(var_mtype, var23, var_anchor);
8898 }
8899 var = var26;
8900 goto RET_LABEL;
8901 } else {
8902 var = var_mtype;
8903 goto RET_LABEL;
8904 }
8905 }
8906 RET_LABEL:;
8907 return var;
8908 }
8909 /* method separate_erasure_compiler$SeparateErasureCompiler$compile_types for (self: SeparateErasureCompiler) */
8910 void nitc___nitc__SeparateErasureCompiler___nitc__separate_compiler__SeparateCompiler__compile_types(val* self) {
8911 val* var /* : Map[MVirtualTypeProp, Int] */;
8912 val* var2 /* : Map[MVirtualTypeProp, Int] */;
8913 {
8914 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$vt_colors (self) on <self:SeparateErasureCompiler> */
8915 var2 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val; /* _vt_colors on <self:SeparateErasureCompiler> */
8916 if (unlikely(var2 == NULL)) {
8917 if(catchStack.cursor >= 0){
8918 longjmp(catchStack.envs[catchStack.cursor], 1);
8919 }
8920 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
8921 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 86);
8922 fatal_exit(1);
8923 }
8924 var = var2;
8925 RET_LABEL1:(void)0;
8926 }
8927 }
8928 {
8929 nitc___nitc__SeparateCompiler___compile_color_consts(self, var); /* Direct call separate_compiler$SeparateCompiler$compile_color_consts on <self:SeparateErasureCompiler>*/
8930 }
8931 RET_LABEL:;
8932 }
8933 /* method separate_erasure_compiler$SeparateErasureCompiler$new_visitor for (self: SeparateErasureCompiler): SeparateCompilerVisitor */
8934 val* nitc___nitc__SeparateErasureCompiler___nitc__abstract_compiler__AbstractCompiler__new_visitor(val* self) {
8935 val* var /* : SeparateCompilerVisitor */;
8936 val* var1 /* : SeparateErasureCompilerVisitor */;
8937 short int var2 /* : Bool */;
8938 int cltype;
8939 int idtype;
8940 const struct type* type_struct;
8941 const char* var_class_name;
8942 var1 = NEW_nitc__SeparateErasureCompilerVisitor(&type_nitc__SeparateErasureCompilerVisitor);
8943 {
8944 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor__compiler_61d]))(var1, self); /* compiler= on <var1:SeparateErasureCompilerVisitor>*/
8945 }
8946 {
8947 ((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:SeparateErasureCompilerVisitor>*/
8948 }
8949 /* <var1:SeparateErasureCompilerVisitor> isa VISITOR */
8950 type_struct = self->type->resolution_table->types[COLOR_nitc__abstract_compiler__AbstractCompiler__VISITOR];
8951 cltype = type_struct->color;
8952 idtype = type_struct->id;
8953 if(cltype >= var1->type->table_size) {
8954 var2 = 0;
8955 } else {
8956 var2 = var1->type->type_table[cltype] == idtype;
8957 }
8958 if (unlikely(!var2)) {
8959 var_class_name = var1 == NULL ? "null" : var1->type->name;
8960 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
8961 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 423);
8962 fatal_exit(1);
8963 }
8964 var = var1;
8965 goto RET_LABEL;
8966 RET_LABEL:;
8967 return var;
8968 }
8969 /* method separate_erasure_compiler$SeparateErasureCompiler$class_tables for (self: SeparateErasureCompiler): Map[MClass, Array[nullable MClass]] */
8970 val* nitc___nitc__SeparateErasureCompiler___class_tables(val* self) {
8971 val* var /* : Map[MClass, Array[nullable MClass]] */;
8972 val* var1 /* : Map[MClass, Array[nullable MClass]] */;
8973 var1 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_tables].val; /* _class_tables on <self:SeparateErasureCompiler> */
8974 if (unlikely(var1 == NULL)) {
8975 if(catchStack.cursor >= 0){
8976 longjmp(catchStack.envs[catchStack.cursor], 1);
8977 }
8978 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_tables");
8979 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 427);
8980 fatal_exit(1);
8981 }
8982 var = var1;
8983 RET_LABEL:;
8984 return var;
8985 }
8986 /* method separate_erasure_compiler$SeparateErasureCompiler$class_tables= for (self: SeparateErasureCompiler, Map[MClass, Array[nullable MClass]]) */
8987 void nitc___nitc__SeparateErasureCompiler___class_tables_61d(val* self, val* p0) {
8988 self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_tables].val = p0; /* _class_tables on <self:SeparateErasureCompiler> */
8989 RET_LABEL:;
8990 }
8991 /* method separate_erasure_compiler$SeparateErasureCompiler$vt_tables for (self: SeparateErasureCompiler): Map[MClass, Array[nullable MPropDef]] */
8992 val* nitc___nitc__SeparateErasureCompiler___vt_tables(val* self) {
8993 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
8994 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
8995 var1 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___vt_tables].val; /* _vt_tables on <self:SeparateErasureCompiler> */
8996 if (unlikely(var1 == NULL)) {
8997 if(catchStack.cursor >= 0){
8998 longjmp(catchStack.envs[catchStack.cursor], 1);
8999 }
9000 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_tables");
9001 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 428);
9002 fatal_exit(1);
9003 }
9004 var = var1;
9005 RET_LABEL:;
9006 return var;
9007 }
9008 /* method separate_erasure_compiler$SeparateErasureCompiler$vt_tables= for (self: SeparateErasureCompiler, Map[MClass, Array[nullable MPropDef]]) */
9009 void nitc___nitc__SeparateErasureCompiler___vt_tables_61d(val* self, val* p0) {
9010 self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___vt_tables].val = p0; /* _vt_tables on <self:SeparateErasureCompiler> */
9011 RET_LABEL:;
9012 }