clib: rename trace_t to stack_frame_t
[nit.git] / c_src / static_type._sep.c
1 /* This C file is generated by NIT to compile module static_type. */
2 #include "static_type._sep.h"
3 val_t static_type___MMLocalClass___get_type(val_t self) {
4 struct trace_t trace = {NULL, NULL, 27, LOCATE_static_type___MMLocalClass___get_type};
5 val_t variable[3];
6 struct WBT_ **closurevariable = NULL;
7 trace.prev = tracehead; tracehead = &trace;
8 trace.file = LOCATE_static_type;
9 /* Register variable[0]: Local variable */
10 variable[0] = self;
11 /* Register variable[1]: Method return value and escape marker */
12 /* Register variable[2]: Result */
13 variable[2] = ATTR_static_type___MMLocalClass____base_type_cache(variable[0]) /*MMLocalClass::_base_type_cache*/;
14 /* Register variable[2]: Result */
15 variable[2] = TAG_Bool((variable[2] == NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], NIT_NULL /*null*/) /*Object::==*/)))));
16 if (UNTAG_Bool(variable[2])) { /*if*/
17 /* Register variable[2]: Result */
18 variable[2] = NEW_MMTypeSimpleClass_static_type___MMTypeSimpleClass___init(variable[0]) /*new MMTypeSimpleClass*/;
19 ATTR_static_type___MMLocalClass____base_type_cache(variable[0]) /*MMLocalClass::_base_type_cache*/ = variable[2];
20 }
21 /* Register variable[2]: Result */
22 variable[2] = ATTR_static_type___MMLocalClass____base_type_cache(variable[0]) /*MMLocalClass::_base_type_cache*/;
23 variable[1] = variable[2];
24 goto return_label0;
25 return_label0: while(false);
26 tracehead = trace.prev;
27 return variable[1];
28 }
29 void static_type___MMLocalClass___add_ancestor(val_t self, val_t param0) {
30 struct trace_t trace = {NULL, NULL, 34, LOCATE_static_type___MMLocalClass___add_ancestor};
31 val_t variable[5];
32 struct WBT_ **closurevariable = NULL;
33 trace.prev = tracehead; tracehead = &trace;
34 trace.file = LOCATE_static_type;
35 /* Register variable[0]: Local variable */
36 variable[0] = self;
37 /* Register variable[1]: Local variable */
38 variable[1] = param0;
39 /* Register variable[2]: Method return value and escape marker */
40 /* Register variable[3]: Result */
41 variable[3] = ATTR_static_type___MMLocalClass____ancestors(variable[0]) /*MMLocalClass::_ancestors*/;
42 /* Register variable[4]: Result */
43 variable[4] = CALL_static_type___MMAncestor___local_class( variable[1] /*a*/)( variable[1] /*a*/) /*MMAncestor::local_class*/;
44 /* Register variable[3]: Result */
45 variable[3] = CALL_abstract_collection___MapRead___has_key(variable[3])(variable[3], variable[4]) /*MapRead::has_key*/;
46 if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMLocalClass___add_ancestor, LOCATE_static_type, 37); nit_exit(1);}
47 /* Register variable[3]: Result */
48 variable[3] = CALL_static_type___MMAncestor___local_class( variable[1] /*a*/)( variable[1] /*a*/) /*MMAncestor::local_class*/;
49 /* Register variable[3]: Result */
50 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == variable[0]) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3],variable[0])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], variable[0]) /*Object::==*/)))))));
51 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMLocalClass___add_ancestor, LOCATE_static_type, 38); nit_exit(1);}
52 /* Register variable[3]: Result */
53 variable[3] = ATTR_static_type___MMLocalClass____ancestors(variable[0]) /*MMLocalClass::_ancestors*/;
54 /* Register variable[4]: Result */
55 variable[4] = CALL_static_type___MMAncestor___local_class( variable[1] /*a*/)( variable[1] /*a*/) /*MMAncestor::local_class*/;
56 CALL_abstract_collection___Map_____braeq(variable[3])(variable[3], variable[4], variable[1] /*a*/) /*Map::[]=*/;
57 return_label1: while(false);
58 tracehead = trace.prev;
59 return;
60 }
61 val_t static_type___MMLocalClass___ancestors(val_t self) {
62 struct trace_t trace = {NULL, NULL, 42, LOCATE_static_type___MMLocalClass___ancestors};
63 val_t *variable = NULL;
64 struct WBT_ **closurevariable = NULL;
65 trace.prev = tracehead; tracehead = &trace;
66 trace.file = LOCATE_static_type;
67 tracehead = trace.prev;
68 return ATTR_static_type___MMLocalClass____ancestors( self) /*MMLocalClass::_ancestors*/;
69 }
70 val_t static_type___MMLocalClass___ancestor(val_t self, val_t param0) {
71 struct trace_t trace = {NULL, NULL, 45, LOCATE_static_type___MMLocalClass___ancestor};
72 val_t variable[4];
73 struct WBT_ **closurevariable = NULL;
74 trace.prev = tracehead; tracehead = &trace;
75 trace.file = LOCATE_static_type;
76 /* Register variable[0]: Local variable */
77 variable[0] = self;
78 /* Register variable[1]: Local variable */
79 variable[1] = param0;
80 /* Register variable[2]: Method return value and escape marker */
81 /* Register variable[3]: Result */
82 variable[3] = ATTR_static_type___MMLocalClass____ancestors(variable[0]) /*MMLocalClass::_ancestors*/;
83 /* Register variable[3]: Result */
84 variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[1] /*c*/) /*MapRead::[]*/;
85 /* Register variable[3]: Result */
86 variable[3] = CALL_static_type___MMAncestor___stype(variable[3])(variable[3]) /*MMAncestor::stype*/;
87 variable[2] = variable[3];
88 goto return_label2;
89 return_label2: while(false);
90 tracehead = trace.prev;
91 return variable[2];
92 }
93 val_t static_type___MMLocalProperty___signature(val_t self) {
94 struct trace_t trace = {NULL, NULL, 53, LOCATE_static_type___MMLocalProperty___signature};
95 val_t *variable = NULL;
96 struct WBT_ **closurevariable = NULL;
97 trace.prev = tracehead; tracehead = &trace;
98 trace.file = LOCATE_static_type;
99 tracehead = trace.prev;
100 return ATTR_static_type___MMLocalProperty____signature( self) /*MMLocalProperty::_signature*/;
101 }
102 void static_type___MMLocalProperty___signature__eq(val_t self, val_t param0) {
103 struct trace_t trace = {NULL, NULL, 53, LOCATE_static_type___MMLocalProperty___signature__eq};
104 val_t *variable = NULL;
105 struct WBT_ **closurevariable = NULL;
106 trace.prev = tracehead; tracehead = &trace;
107 trace.file = LOCATE_static_type;
108 ATTR_static_type___MMLocalProperty____signature( self) /*MMLocalProperty::_signature*/ = param0;
109 tracehead = trace.prev;
110 return;
111 }
112 val_t static_type___MMLocalProperty___signature_for(val_t self, val_t param0) {
113 struct trace_t trace = {NULL, NULL, 58, LOCATE_static_type___MMLocalProperty___signature_for};
114 val_t variable[5];
115 struct WBT_ **closurevariable = NULL;
116 trace.prev = tracehead; tracehead = &trace;
117 trace.file = LOCATE_static_type;
118 /* Register variable[0]: Local variable */
119 variable[0] = self;
120 /* Register variable[1]: Local variable */
121 variable[1] = param0;
122 /* Register variable[2]: Method return value and escape marker */
123 /* Register variable[3]: Result */
124 variable[3] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[0])(variable[0]) /*MMLocalProperty::local_class*/;
125 /* Register variable[3]: Result */
126 variable[3] = CALL_static_type___MMLocalClass___get_type(variable[3])(variable[3]) /*MMLocalClass::get_type*/;
127 /* Register variable[3]: Result */
128 variable[3] = TAG_Bool(( variable[1] /*t*/ == variable[3]) || (( variable[1] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*t*/,variable[3])):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*t*/)( variable[1] /*t*/, variable[3]) /*Object::==*/)))));
129 if (UNTAG_Bool(variable[3])) { /*if*/
130 /* Register variable[3]: Result */
131 variable[3] = CALL_static_type___MMLocalProperty___signature(variable[0])(variable[0]) /*MMLocalProperty::signature*/;
132 variable[2] = variable[3];
133 goto return_label3;
134 }
135 /* Register variable[3]: Result */
136 variable[3] = ATTR_static_type___MMLocalProperty____signatures_cache(variable[0]) /*MMLocalProperty::_signatures_cache*/;
137 /* Register variable[3]: Result */
138 variable[3] = CALL_abstract_collection___MapRead___has_key(variable[3])(variable[3], variable[1] /*t*/) /*CoupleMap::has_key*/;
139 if (UNTAG_Bool(variable[3])) { /*if*/
140 /* Register variable[3]: Result */
141 variable[3] = ATTR_static_type___MMLocalProperty____signatures_cache(variable[0]) /*MMLocalProperty::_signatures_cache*/;
142 /* Register variable[3]: Result */
143 variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[1] /*t*/) /*CoupleMap::[]*/;
144 variable[2] = variable[3];
145 goto return_label3;
146 }
147 /* Register variable[3]: Local variable */
148 /* Register variable[4]: Result */
149 variable[4] = CALL_static_type___MMLocalProperty___signature(variable[0])(variable[0]) /*MMLocalProperty::signature*/;
150 /* Register variable[4]: Result */
151 variable[4] = CALL_static_type___MMSignature___adaptation_to(variable[4])(variable[4], variable[1] /*t*/) /*MMSignature::adaptation_to*/;
152 variable[3] = variable[4];
153 /* Register variable[4]: Result */
154 variable[4] = ATTR_static_type___MMLocalProperty____signatures_cache(variable[0]) /*MMLocalProperty::_signatures_cache*/;
155 CALL_abstract_collection___Map_____braeq(variable[4])(variable[4], variable[1] /*t*/, variable[3] /*res*/) /*HashMap::[]=*/;
156 variable[2] = variable[3] /*res*/;
157 goto return_label3;
158 return_label3: while(false);
159 tracehead = trace.prev;
160 return variable[2];
161 }
162 val_t static_type___MMSignature___to_s(val_t self) {
163 struct trace_t trace = {NULL, NULL, 124, LOCATE_static_type___MMSignature___to_s};
164 static val_t once_value_7 = NIT_NULL; /* Once value for string variable[6]*/
165 static val_t once_value_8 = NIT_NULL; /* Once value for string variable[6]*/
166 static val_t once_value_9 = NIT_NULL; /* Once value for string variable[6]*/
167 static val_t once_value_10 = NIT_NULL; /* Once value for string variable[4]*/
168 static val_t once_value_11 = NIT_NULL; /* Once value for string variable[4]*/
169 val_t variable[14];
170 struct WBT_ **closurevariable = NULL;
171 trace.prev = tracehead; tracehead = &trace;
172 trace.file = LOCATE_static_type;
173 /* Register variable[0]: Local variable */
174 variable[0] = self;
175 /* Register variable[1]: Method return value and escape marker */
176 /* Register variable[2]: Local variable */
177 /* Register variable[3]: Result */
178 variable[3] = NEW_Buffer_string___Buffer___init() /*new Buffer*/;
179 variable[2] = variable[3];
180 /* Register variable[3]: Result */
181 variable[3] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
182 /* Register variable[3]: Result */
183 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
184 /* Ensure var variable[3]: Left 'and' operand*/
185 if (UNTAG_Bool(variable[3])) { /* and */
186 /* Register variable[3]: Result */
187 variable[3] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
188 /* Register variable[3]: Result */
189 variable[3] = CALL_abstract_collection___Collection___length(variable[3])(variable[3]) /*AbstractArrayRead::length*/;
190 /* Register variable[3]: Result */
191 variable[3] = TAG_Bool(UNTAG_Int(variable[3])>UNTAG_Int( TAG_Int(0)));
192 }
193 /* Register variable[3]: Result */
194 if (UNTAG_Bool(variable[3])) { /*if*/
195 /* Register variable[3]: Local variable */
196 /*variable[3] is variable tmp*/
197 /* Register variable[4]: Local variable */
198 /* Register variable[5]: Result */
199 variable[5] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
200 /* Register variable[5]: Result */
201 variable[5] = CALL_abstract_collection___Collection___length(variable[5])(variable[5]) /*AbstractArrayRead::length*/;
202 /* Register variable[5]: Result */
203 variable[5] = NEW_Array_array___Array___with_capacity(variable[5]) /*new Array[String]*/;
204 variable[4] = variable[5];
205 /* Register variable[5]: Result */
206 variable[5] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
207 /* Register variable[5]: Result */
208 variable[5] = CALL_abstract_collection___Collection___length(variable[5])(variable[5]) /*AbstractArrayRead::length*/;
209 /* Register variable[5]: Result */
210 variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[5]) /*new Range[Int]*/;
211 /* Register variable[5]: For iterator */
212 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*Range::iterator*/;
213 while (true) { /*for*/
214 /* Register variable[6]: For 'is_ok' result */
215 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
216 if (!UNTAG_Bool(variable[6])) break; /*for*/
217 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
218 /* Register variable[7]: Local variable */
219 variable[7] = variable[6];
220 /* Register variable[8]: Local variable */
221 /* Register variable[9]: Result */
222 variable[9] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
223 /* Register variable[10]: Local variable */
224 variable[10] = variable[9];
225 /* Register variable[11]: Local variable */
226 variable[11] = variable[7] /*i*/;
227 /* Register variable[12]: Method return value and escape marker */
228 /* Register variable[13]: Result */
229 variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)>=UNTAG_Int( TAG_Int(0)));
230 /* Ensure var variable[13]: Left 'and' operand*/
231 if (UNTAG_Bool(variable[13])) { /* and */
232 /* Register variable[13]: Result */
233 variable[13] = ATTR_array___AbstractArrayRead____length(variable[10]) /*AbstractArrayRead::_length*/;
234 /* Register variable[13]: Result */
235 variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)<UNTAG_Int(variable[13]));
236 }
237 /* Register variable[13]: Result */
238 if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_static_type, 234); nit_exit(1);}
239 /* Register variable[13]: Result */
240 variable[13] = ATTR_array___Array____items(variable[10]) /*Array::_items*/;
241 /* Register variable[13]: Result */
242 variable[13] = UNBOX_NativeArray(variable[13])[UNTAG_Int( variable[11] /*index*/)];
243 variable[12] = variable[13];
244 goto return_label6;
245 return_label6: while(false);
246 /* Register variable[9]: Result */
247 variable[9] = variable[12];
248 variable[8] = variable[9];
249 /* Register variable[9]: Result */
250 variable[9] = CALL_string___Object___to_s( variable[8] /*p*/)( variable[8] /*p*/) /*Object::to_s*/;
251 CALL_abstract_collection___SimpleCollection___add( variable[4] /*a*/)( variable[4] /*a*/, variable[9]) /*AbstractArray::add*/;
252 continue_5: while(0);
253 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
254 }
255 break_5: while(0);
256 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
257 /* Register variable[6]: Once String constant */
258 if (once_value_7 != NIT_NULL) variable[6] = once_value_7;
259 else {
260 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("("), TAG_Int(1)) /*new String*/;
261 once_value_7 = variable[6];
262 }
263 /* Register variable[6]: Result */
264 /* Ensure var variable[6]: super-string element*/
265 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
266 /* Register variable[6]: Once String constant */
267 if (once_value_8 != NIT_NULL) variable[6] = once_value_8;
268 else {
269 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(","), TAG_Int(1)) /*new String*/;
270 once_value_8 = variable[6];
271 }
272 /* Register variable[6]: Result */
273 /* Register variable[6]: Result */
274 variable[6] = CALL_string___Collection___join( variable[4] /*a*/)( variable[4] /*a*/, variable[6]) /*Collection::join*/;
275 /* Ensure var variable[6]: super-string element*/
276 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
277 /* Register variable[6]: Once String constant */
278 if (once_value_9 != NIT_NULL) variable[6] = once_value_9;
279 else {
280 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(")"), TAG_Int(1)) /*new String*/;
281 once_value_9 = variable[6];
282 }
283 /* Register variable[6]: Result */
284 /* Ensure var variable[6]: super-string element*/
285 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
286 /* Register variable[5]: Result */
287 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
288 CALL_abstract_collection___IndexedCollection___append( variable[2] /*s*/)( variable[2] /*s*/, variable[5]) /*Buffer::append*/;
289 }
290 /* Register variable[3]: Result */
291 variable[3] = ATTR_static_type___MMSignature____return_type(variable[0]) /*MMSignature::_return_type*/;
292 /* Register variable[3]: Result */
293 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
294 if (UNTAG_Bool(variable[3])) { /*if*/
295 variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
296 /* Register variable[4]: Once String constant */
297 if (once_value_10 != NIT_NULL) variable[4] = once_value_10;
298 else {
299 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)) /*new String*/;
300 once_value_10 = variable[4];
301 }
302 /* Register variable[4]: Result */
303 /* Ensure var variable[4]: super-string element*/
304 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
305 /* Register variable[4]: Result */
306 variable[4] = ATTR_static_type___MMSignature____return_type(variable[0]) /*MMSignature::_return_type*/;
307 /* Ensure var variable[4]: super-string element*/
308 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
309 /* Register variable[4]: Once String constant */
310 if (once_value_11 != NIT_NULL) variable[4] = once_value_11;
311 else {
312 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
313 once_value_11 = variable[4];
314 }
315 /* Register variable[4]: Result */
316 /* Ensure var variable[4]: super-string element*/
317 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
318 /* Register variable[3]: Result */
319 variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
320 CALL_abstract_collection___IndexedCollection___append( variable[2] /*s*/)( variable[2] /*s*/, variable[3]) /*Buffer::append*/;
321 }
322 /* Register variable[3]: Result */
323 variable[3] = CALL_string___Object___to_s( variable[2] /*s*/)( variable[2] /*s*/) /*Buffer::to_s*/;
324 variable[1] = variable[3];
325 goto return_label4;
326 return_label4: while(false);
327 tracehead = trace.prev;
328 return variable[1];
329 }
330 val_t static_type___MMSignature___recv(val_t self) {
331 struct trace_t trace = {NULL, NULL, 72, LOCATE_static_type___MMSignature___recv};
332 val_t *variable = NULL;
333 struct WBT_ **closurevariable = NULL;
334 trace.prev = tracehead; tracehead = &trace;
335 trace.file = LOCATE_static_type;
336 tracehead = trace.prev;
337 return ATTR_static_type___MMSignature____recv( self) /*MMSignature::_recv*/;
338 }
339 val_t static_type___MMSignature___return_type(val_t self) {
340 struct trace_t trace = {NULL, NULL, 78, LOCATE_static_type___MMSignature___return_type};
341 val_t *variable = NULL;
342 struct WBT_ **closurevariable = NULL;
343 trace.prev = tracehead; tracehead = &trace;
344 trace.file = LOCATE_static_type;
345 tracehead = trace.prev;
346 return ATTR_static_type___MMSignature____return_type( self) /*MMSignature::_return_type*/;
347 }
348 val_t static_type___MMSignature___closures(val_t self) {
349 struct trace_t trace = {NULL, NULL, 81, LOCATE_static_type___MMSignature___closures};
350 val_t *variable = NULL;
351 struct WBT_ **closurevariable = NULL;
352 trace.prev = tracehead; tracehead = &trace;
353 trace.file = LOCATE_static_type;
354 tracehead = trace.prev;
355 return ATTR_static_type___MMSignature____closures( self) /*MMSignature::_closures*/;
356 }
357 val_t static_type___MMSignature___arity(val_t self) {
358 struct trace_t trace = {NULL, NULL, 84, LOCATE_static_type___MMSignature___arity};
359 val_t variable[3];
360 struct WBT_ **closurevariable = NULL;
361 trace.prev = tracehead; tracehead = &trace;
362 trace.file = LOCATE_static_type;
363 /* Register variable[0]: Local variable */
364 variable[0] = self;
365 /* Register variable[1]: Method return value and escape marker */
366 /* Register variable[2]: Result */
367 variable[2] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
368 /* Register variable[2]: Result */
369 variable[2] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[2] == NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], NIT_NULL /*null*/) /*Object::==*/)))))));
370 if (!UNTAG_Bool(variable[2])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMSignature___arity, LOCATE_static_type, 87); nit_exit(1);}
371 /* Register variable[2]: Result */
372 variable[2] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
373 /* Register variable[2]: Result */
374 variable[2] = CALL_abstract_collection___Collection___length(variable[2])(variable[2]) /*AbstractArrayRead::length*/;
375 variable[1] = variable[2];
376 goto return_label12;
377 return_label12: while(false);
378 tracehead = trace.prev;
379 return variable[1];
380 }
381 val_t static_type___MMSignature_____l(val_t self, val_t param0) {
382 struct trace_t trace = {NULL, NULL, 91, LOCATE_static_type___MMSignature_____l};
383 val_t variable[12];
384 struct WBT_ **closurevariable = NULL;
385 trace.prev = tracehead; tracehead = &trace;
386 trace.file = LOCATE_static_type;
387 /* Register variable[0]: Local variable */
388 variable[0] = self;
389 /* Register variable[1]: Local variable */
390 variable[1] = param0;
391 /* Register variable[2]: Method return value and escape marker */
392 /* Register variable[3]: Result */
393 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*s*/ == NIT_NULL /*null*/) || (( variable[1] /*s*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*s*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*s*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*s*/)( variable[1] /*s*/, NIT_NULL /*null*/) /*Object::==*/)))))));
394 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMSignature_____l, LOCATE_static_type, 94); nit_exit(1);}
395 /* Register variable[3]: Result */
396 variable[3] = TAG_Bool((variable[0] == variable[1] /*s*/) || ((variable[0] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[0])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[0], variable[1] /*s*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[0])(variable[0], variable[1] /*s*/) /*Object::==*/)))));
397 if (UNTAG_Bool(variable[3])) { /*if*/
398 variable[2] = TAG_Bool(true);
399 goto return_label13;
400 }
401 /* Register variable[3]: Result */
402 variable[3] = ATTR_static_type___MMSignature____recv(variable[0]) /*MMSignature::_recv*/;
403 /* Register variable[3]: Result */
404 variable[3] = CALL_static_type___MMType___module(variable[3])(variable[3]) /*MMType::module*/;
405 /* Register variable[4]: Result */
406 variable[4] = CALL_static_type___MMSignature___recv( variable[1] /*s*/)( variable[1] /*s*/) /*MMSignature::recv*/;
407 /* Register variable[4]: Result */
408 variable[4] = CALL_static_type___MMType___module(variable[4])(variable[4]) /*MMType::module*/;
409 /* Register variable[3]: Result */
410 variable[3] = TAG_Bool((variable[3] == variable[4]) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3],variable[4])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], variable[4]) /*Object::==*/)))));
411 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMSignature_____l, LOCATE_static_type, 98); nit_exit(1);}
412 /* Register variable[3]: Result */
413 variable[3] = CALL_static_type___MMSignature___arity(variable[0])(variable[0]) /*MMSignature::arity*/;
414 /* Register variable[4]: Result */
415 variable[4] = CALL_static_type___MMSignature___arity( variable[1] /*s*/)( variable[1] /*s*/) /*MMSignature::arity*/;
416 /* Register variable[3]: Result */
417 variable[3] = TAG_Bool((variable[3])!=(variable[4]));
418 /* Ensure var variable[3]: Left 'or' operand*/
419 if (!UNTAG_Bool(variable[3])) { /* or */
420 /* Register variable[3]: Result */
421 variable[3] = ATTR_static_type___MMSignature____return_type(variable[0]) /*MMSignature::_return_type*/;
422 /* Register variable[3]: Result */
423 variable[3] = TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))));
424 /* Register variable[4]: Result */
425 variable[4] = CALL_static_type___MMSignature___return_type( variable[1] /*s*/)( variable[1] /*s*/) /*MMSignature::return_type*/;
426 /* Register variable[4]: Result */
427 variable[4] = TAG_Bool((variable[4] == NIT_NULL /*null*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4], NIT_NULL /*null*/) /*Object::==*/)))));
428 /* Register variable[3]: Result */
429 variable[3] = TAG_Bool((variable[3])!=(variable[4]));
430 }
431 /* Register variable[3]: Result */
432 if (UNTAG_Bool(variable[3])) { /*if*/
433 variable[2] = TAG_Bool(false);
434 goto return_label13;
435 }
436 /* Register variable[3]: Result */
437 variable[3] = ATTR_static_type___MMSignature____return_type(variable[0]) /*MMSignature::_return_type*/;
438 /* Register variable[3]: Result */
439 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
440 /* Ensure var variable[3]: Left 'and' operand*/
441 if (UNTAG_Bool(variable[3])) { /* and */
442 /* Register variable[3]: Result */
443 variable[3] = ATTR_static_type___MMSignature____return_type(variable[0]) /*MMSignature::_return_type*/;
444 /* Register variable[4]: Result */
445 variable[4] = CALL_static_type___MMSignature___return_type( variable[1] /*s*/)( variable[1] /*s*/) /*MMSignature::return_type*/;
446 /* Register variable[3]: Result */
447 variable[3] = CALL_static_type___MMType_____l(variable[3])(variable[3], variable[4]) /*MMType::<*/;
448 variable[3] = TAG_Bool(!UNTAG_Bool(variable[3]));
449 }
450 /* Register variable[3]: Result */
451 if (UNTAG_Bool(variable[3])) { /*if*/
452 variable[2] = TAG_Bool(false);
453 goto return_label13;
454 }
455 /* Register variable[3]: Result */
456 variable[3] = CALL_static_type___MMSignature___arity(variable[0])(variable[0]) /*MMSignature::arity*/;
457 /* Register variable[3]: Result */
458 variable[3] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[3]) /*new Range[Int]*/;
459 /* Register variable[3]: For iterator */
460 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*Range::iterator*/;
461 while (true) { /*for*/
462 /* Register variable[4]: For 'is_ok' result */
463 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
464 if (!UNTAG_Bool(variable[4])) break; /*for*/
465 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
466 /* Register variable[5]: Local variable */
467 variable[5] = variable[4];
468 /* Register variable[6]: Result */
469 variable[6] = CALL_static_type___MMSignature_____bra( variable[1] /*s*/)( variable[1] /*s*/, variable[5] /*i*/) /*MMSignature::[]*/;
470 /* Register variable[7]: Result */
471 variable[7] = CALL_static_type___MMSignature_____bra(variable[0])(variable[0], variable[5] /*i*/) /*MMSignature::[]*/;
472 /* Register variable[6]: Result */
473 variable[6] = CALL_static_type___MMType_____l(variable[6])(variable[6], variable[7]) /*MMType::<*/;
474 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
475 variable[2] = TAG_Bool(false);
476 goto return_label13;
477 }
478 continue_14: while(0);
479 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
480 }
481 break_14: while(0);
482 /* Register variable[3]: Result */
483 variable[3] = CALL_static_type___MMSignature___closures(variable[0])(variable[0]) /*MMSignature::closures*/;
484 /* Register variable[3]: Result */
485 variable[3] = CALL_abstract_collection___Collection___length(variable[3])(variable[3]) /*AbstractArrayRead::length*/;
486 /* Register variable[4]: Result */
487 variable[4] = CALL_static_type___MMSignature___closures( variable[1] /*s*/)( variable[1] /*s*/) /*MMSignature::closures*/;
488 /* Register variable[4]: Result */
489 variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*AbstractArrayRead::length*/;
490 /* Register variable[3]: Result */
491 variable[3] = TAG_Bool((variable[3])!=(variable[4]));
492 if (UNTAG_Bool(variable[3])) { /*if*/
493 variable[2] = TAG_Bool(false);
494 goto return_label13;
495 }
496 /* Register variable[3]: Result */
497 variable[3] = CALL_static_type___MMSignature___closures(variable[0])(variable[0]) /*MMSignature::closures*/;
498 /* Register variable[3]: Result */
499 variable[3] = CALL_abstract_collection___Collection___length(variable[3])(variable[3]) /*AbstractArrayRead::length*/;
500 /* Register variable[3]: Result */
501 variable[3] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[3]) /*new Range[Int]*/;
502 /* Register variable[3]: For iterator */
503 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*Range::iterator*/;
504 while (true) { /*for*/
505 /* Register variable[4]: For 'is_ok' result */
506 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
507 if (!UNTAG_Bool(variable[4])) break; /*for*/
508 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
509 /* Register variable[5]: Local variable */
510 variable[5] = variable[4];
511 /* Register variable[6]: Result */
512 variable[6] = CALL_static_type___MMSignature___closures( variable[1] /*s*/)( variable[1] /*s*/) /*MMSignature::closures*/;
513 /* Register variable[7]: Local variable */
514 variable[7] = variable[6];
515 /* Register variable[8]: Local variable */
516 variable[8] = variable[5] /*i*/;
517 /* Register variable[9]: Method return value and escape marker */
518 /* Register variable[10]: Result */
519 variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)>=UNTAG_Int( TAG_Int(0)));
520 /* Ensure var variable[10]: Left 'and' operand*/
521 if (UNTAG_Bool(variable[10])) { /* and */
522 /* Register variable[10]: Result */
523 variable[10] = ATTR_array___AbstractArrayRead____length(variable[7]) /*AbstractArrayRead::_length*/;
524 /* Register variable[10]: Result */
525 variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)<UNTAG_Int(variable[10]));
526 }
527 /* Register variable[10]: Result */
528 if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_static_type, 234); nit_exit(1);}
529 /* Register variable[10]: Result */
530 variable[10] = ATTR_array___Array____items(variable[7]) /*Array::_items*/;
531 /* Register variable[10]: Result */
532 variable[10] = UNBOX_NativeArray(variable[10])[UNTAG_Int( variable[8] /*index*/)];
533 variable[9] = variable[10];
534 goto return_label16;
535 return_label16: while(false);
536 /* Register variable[6]: Result */
537 variable[6] = variable[9];
538 /* Register variable[7]: Result */
539 variable[7] = CALL_static_type___MMSignature___closures(variable[0])(variable[0]) /*MMSignature::closures*/;
540 /* Register variable[8]: Local variable */
541 variable[8] = variable[7];
542 /* Register variable[9]: Local variable */
543 variable[9] = variable[5] /*i*/;
544 /* Register variable[10]: Method return value and escape marker */
545 /* Register variable[11]: Result */
546 variable[11] = TAG_Bool(UNTAG_Int( variable[9] /*index*/)>=UNTAG_Int( TAG_Int(0)));
547 /* Ensure var variable[11]: Left 'and' operand*/
548 if (UNTAG_Bool(variable[11])) { /* and */
549 /* Register variable[11]: Result */
550 variable[11] = ATTR_array___AbstractArrayRead____length(variable[8]) /*AbstractArrayRead::_length*/;
551 /* Register variable[11]: Result */
552 variable[11] = TAG_Bool(UNTAG_Int( variable[9] /*index*/)<UNTAG_Int(variable[11]));
553 }
554 /* Register variable[11]: Result */
555 if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_static_type, 234); nit_exit(1);}
556 /* Register variable[11]: Result */
557 variable[11] = ATTR_array___Array____items(variable[8]) /*Array::_items*/;
558 /* Register variable[11]: Result */
559 variable[11] = UNBOX_NativeArray(variable[11])[UNTAG_Int( variable[9] /*index*/)];
560 variable[10] = variable[11];
561 goto return_label17;
562 return_label17: while(false);
563 /* Register variable[7]: Result */
564 variable[7] = variable[10];
565 /* Register variable[6]: Result */
566 variable[6] = CALL_static_type___MMClosure_____l(variable[6])(variable[6], variable[7]) /*MMClosure::<*/;
567 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
568 variable[2] = TAG_Bool(false);
569 goto return_label13;
570 }
571 continue_15: while(0);
572 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
573 }
574 break_15: while(0);
575 variable[2] = TAG_Bool(true);
576 goto return_label13;
577 return_label13: while(false);
578 tracehead = trace.prev;
579 return variable[2];
580 }
581 val_t static_type___MMSignature_____bra(val_t self, val_t param0) {
582 struct trace_t trace = {NULL, NULL, 117, LOCATE_static_type___MMSignature_____bra};
583 val_t variable[8];
584 struct WBT_ **closurevariable = NULL;
585 trace.prev = tracehead; tracehead = &trace;
586 trace.file = LOCATE_static_type;
587 /* Register variable[0]: Local variable */
588 variable[0] = self;
589 /* Register variable[1]: Local variable */
590 variable[1] = param0;
591 /* Register variable[2]: Method return value and escape marker */
592 /* Register variable[3]: Result */
593 variable[3] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
594 /* Register variable[3]: Result */
595 variable[3] = CALL_abstract_collection___Collection___length(variable[3])(variable[3]) /*AbstractArrayRead::length*/;
596 /* Register variable[3]: Result */
597 variable[3] = TAG_Bool(UNTAG_Int(variable[3])>UNTAG_Int( variable[1] /*i*/));
598 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMSignature_____bra, LOCATE_static_type, 120); nit_exit(1);}
599 /* Register variable[3]: Result */
600 variable[3] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
601 /* Register variable[4]: Local variable */
602 variable[4] = variable[3];
603 /* Register variable[5]: Local variable */
604 variable[5] = variable[1] /*i*/;
605 /* Register variable[6]: Method return value and escape marker */
606 /* Register variable[7]: Result */
607 variable[7] = TAG_Bool(UNTAG_Int( variable[5] /*index*/)>=UNTAG_Int( TAG_Int(0)));
608 /* Ensure var variable[7]: Left 'and' operand*/
609 if (UNTAG_Bool(variable[7])) { /* and */
610 /* Register variable[7]: Result */
611 variable[7] = ATTR_array___AbstractArrayRead____length(variable[4]) /*AbstractArrayRead::_length*/;
612 /* Register variable[7]: Result */
613 variable[7] = TAG_Bool(UNTAG_Int( variable[5] /*index*/)<UNTAG_Int(variable[7]));
614 }
615 /* Register variable[7]: Result */
616 if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_static_type, 234); nit_exit(1);}
617 /* Register variable[7]: Result */
618 variable[7] = ATTR_array___Array____items(variable[4]) /*Array::_items*/;
619 /* Register variable[7]: Result */
620 variable[7] = UNBOX_NativeArray(variable[7])[UNTAG_Int( variable[5] /*index*/)];
621 variable[6] = variable[7];
622 goto return_label19;
623 return_label19: while(false);
624 /* Register variable[3]: Result */
625 variable[3] = variable[6];
626 variable[2] = variable[3];
627 goto return_label18;
628 return_label18: while(false);
629 tracehead = trace.prev;
630 return variable[2];
631 }
632 val_t static_type___MMSignature___adaptation_to(val_t self, val_t param0) {
633 struct trace_t trace = {NULL, NULL, 144, LOCATE_static_type___MMSignature___adaptation_to};
634 val_t variable[12];
635 struct WBT_ **closurevariable = NULL;
636 trace.prev = tracehead; tracehead = &trace;
637 trace.file = LOCATE_static_type;
638 /* Register variable[0]: Local variable */
639 variable[0] = self;
640 /* Register variable[1]: Local variable */
641 variable[1] = param0;
642 /* Register variable[2]: Method return value and escape marker */
643 /* Register variable[3]: Result */
644 variable[3] = ATTR_static_type___MMSignature____recv(variable[0]) /*MMSignature::_recv*/;
645 /* Register variable[3]: Result */
646 variable[3] = TAG_Bool((variable[3] == variable[1] /*r*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], variable[1] /*r*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], variable[1] /*r*/) /*Object::==*/)))));
647 if (UNTAG_Bool(variable[3])) { /*if*/
648 variable[2] = variable[0];
649 goto return_label20;
650 }
651 /* Register variable[3]: Local variable */
652 /* Register variable[4]: Result */
653 variable[4] = CALL_static_type___MMType___module( variable[1] /*r*/)( variable[1] /*r*/) /*MMType::module*/;
654 variable[3] = variable[4];
655 /* Register variable[4]: Local variable */
656 /* Register variable[5]: Result */
657 variable[5] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
658 variable[4] = variable[5];
659 /* Register variable[5]: Result */
660 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*p*/ == NIT_NULL /*null*/) || (( variable[4] /*p*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*p*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*p*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*p*/)( variable[4] /*p*/, NIT_NULL /*null*/) /*Object::==*/)))))));
661 if (UNTAG_Bool(variable[5])) { /*if*/
662 /* Register variable[5]: Result */
663 variable[5] = NEW_Array_array___Array___init() /*new Array[MMType]*/;
664 variable[4] = variable[5] /*p=*/;
665 /* Register variable[5]: Result */
666 variable[5] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
667 /* Register variable[5]: For iterator */
668 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArrayRead::iterator*/;
669 while (true) { /*for*/
670 /* Register variable[6]: For 'is_ok' result */
671 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
672 if (!UNTAG_Bool(variable[6])) break; /*for*/
673 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
674 /* Register variable[7]: Local variable */
675 variable[7] = variable[6];
676 /* Register variable[8]: Result */
677 variable[8] = CALL_static_type___MMType___for_module( variable[7] /*i*/)( variable[7] /*i*/, variable[3] /*mod*/) /*MMType::for_module*/;
678 /* Register variable[8]: Result */
679 variable[8] = CALL_static_type___MMType___adapt_to(variable[8])(variable[8], variable[1] /*r*/) /*MMType::adapt_to*/;
680 CALL_abstract_collection___SimpleCollection___add( variable[4] /*p*/)( variable[4] /*p*/, variable[8]) /*AbstractArray::add*/;
681 continue_21: while(0);
682 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
683 }
684 break_21: while(0);
685 }
686 /* Register variable[5]: Local variable */
687 /* Register variable[6]: Result */
688 variable[6] = ATTR_static_type___MMSignature____return_type(variable[0]) /*MMSignature::_return_type*/;
689 variable[5] = variable[6];
690 /* Register variable[6]: Result */
691 variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*rv*/ == NIT_NULL /*null*/) || (( variable[5] /*rv*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*rv*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*rv*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*rv*/)( variable[5] /*rv*/, NIT_NULL /*null*/) /*Object::==*/)))))));
692 if (UNTAG_Bool(variable[6])) { /*if*/
693 /* Register variable[6]: Result */
694 variable[6] = CALL_static_type___MMType___for_module( variable[5] /*rv*/)( variable[5] /*rv*/, variable[3] /*mod*/) /*MMType::for_module*/;
695 /* Register variable[6]: Result */
696 variable[6] = CALL_static_type___MMType___adapt_to(variable[6])(variable[6], variable[1] /*r*/) /*MMType::adapt_to*/;
697 variable[5] = variable[6] /*rv=*/;
698 }
699 /* Register variable[6]: Local variable */
700 /* Register variable[7]: Result */
701 variable[7] = NEW_MMSignature_static_type___MMSignature___init( variable[4] /*p*/, variable[5] /*rv*/, variable[1] /*r*/) /*new MMSignature*/;
702 variable[6] = variable[7];
703 /* Register variable[7]: Result */
704 variable[7] = ATTR_static_type___MMSignature____closures(variable[0]) /*MMSignature::_closures*/;
705 /* Register variable[7]: For iterator */
706 variable[7] = CALL_abstract_collection___Collection___iterator(variable[7])(variable[7]) /*AbstractArrayRead::iterator*/;
707 while (true) { /*for*/
708 /* Register variable[8]: For 'is_ok' result */
709 variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*ArrayIterator::is_ok*/;
710 if (!UNTAG_Bool(variable[8])) break; /*for*/
711 variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
712 /* Register variable[9]: Local variable */
713 variable[9] = variable[8];
714 /* Register variable[10]: Result */
715 variable[10] = CALL_static_type___MMSignature___closures( variable[6] /*res*/)( variable[6] /*res*/) /*MMSignature::closures*/;
716 /* Register variable[11]: Result */
717 variable[11] = CALL_static_type___MMClosure___adaptation_to( variable[9] /*clos*/)( variable[9] /*clos*/, variable[1] /*r*/) /*MMClosure::adaptation_to*/;
718 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
719 continue_22: while(0);
720 CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*ArrayIterator::next*/;
721 }
722 break_22: while(0);
723 variable[2] = variable[6] /*res*/;
724 goto return_label20;
725 return_label20: while(false);
726 tracehead = trace.prev;
727 return variable[2];
728 }
729 val_t static_type___MMSignature___not_for_self(val_t self) {
730 struct trace_t trace = {NULL, NULL, 171, LOCATE_static_type___MMSignature___not_for_self};
731 val_t variable[12];
732 struct WBT_ **closurevariable = NULL;
733 trace.prev = tracehead; tracehead = &trace;
734 trace.file = LOCATE_static_type;
735 /* Register variable[0]: Local variable */
736 variable[0] = self;
737 /* Register variable[1]: Method return value and escape marker */
738 /* Register variable[2]: Local variable */
739 /* Register variable[3]: Result */
740 variable[3] = ATTR_static_type___MMSignature____not_for_self_cache(variable[0]) /*MMSignature::_not_for_self_cache*/;
741 variable[2] = variable[3];
742 /* Register variable[3]: Result */
743 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*res*/ == NIT_NULL /*null*/) || (( variable[2] /*res*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*res*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*res*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*res*/)( variable[2] /*res*/, NIT_NULL /*null*/) /*Object::==*/)))))));
744 if (UNTAG_Bool(variable[3])) { /*if*/
745 variable[1] = variable[2] /*res*/;
746 goto return_label23;
747 }
748 /* Register variable[3]: Local variable */
749 variable[3] = TAG_Bool(false);
750 /* Register variable[4]: Local variable */
751 /* Register variable[5]: Result */
752 variable[5] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
753 variable[4] = variable[5];
754 /* Register variable[5]: Result */
755 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*p*/ == NIT_NULL /*null*/) || (( variable[4] /*p*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*p*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*p*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*p*/)( variable[4] /*p*/, NIT_NULL /*null*/) /*Object::==*/)))))));
756 if (UNTAG_Bool(variable[5])) { /*if*/
757 /* Register variable[5]: Result */
758 variable[5] = NEW_Array_array___Array___init() /*new Array[MMType]*/;
759 variable[4] = variable[5] /*p=*/;
760 /* Register variable[5]: Result */
761 variable[5] = ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/;
762 /* Register variable[5]: For iterator */
763 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArrayRead::iterator*/;
764 while (true) { /*for*/
765 /* Register variable[6]: For 'is_ok' result */
766 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
767 if (!UNTAG_Bool(variable[6])) break; /*for*/
768 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
769 /* Register variable[7]: Local variable */
770 variable[7] = variable[6];
771 /* Register variable[8]: Local variable */
772 /* Register variable[9]: Result */
773 variable[9] = CALL_static_type___MMType___not_for_self( variable[7] /*i*/)( variable[7] /*i*/) /*MMType::not_for_self*/;
774 variable[8] = variable[9];
775 /* Register variable[9]: Result */
776 variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*i*/ == variable[8] /*i2*/) || (( variable[7] /*i*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*i*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*i*/, variable[8] /*i2*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*i*/)( variable[7] /*i*/, variable[8] /*i2*/) /*Object::==*/)))))));
777 if (UNTAG_Bool(variable[9])) { /*if*/
778 variable[3] = TAG_Bool(true) /*need_for_self=*/;
779 }
780 CALL_abstract_collection___SimpleCollection___add( variable[4] /*p*/)( variable[4] /*p*/, variable[8] /*i2*/) /*AbstractArray::add*/;
781 continue_24: while(0);
782 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
783 }
784 break_24: while(0);
785 }
786 /* Register variable[5]: Local variable */
787 /* Register variable[6]: Result */
788 variable[6] = ATTR_static_type___MMSignature____return_type(variable[0]) /*MMSignature::_return_type*/;
789 variable[5] = variable[6];
790 /* Register variable[6]: Result */
791 variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*rv*/ == NIT_NULL /*null*/) || (( variable[5] /*rv*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*rv*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*rv*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*rv*/)( variable[5] /*rv*/, NIT_NULL /*null*/) /*Object::==*/)))))));
792 if (UNTAG_Bool(variable[6])) { /*if*/
793 /* Register variable[6]: Result */
794 variable[6] = CALL_static_type___MMType___not_for_self( variable[5] /*rv*/)( variable[5] /*rv*/) /*MMType::not_for_self*/;
795 variable[5] = variable[6] /*rv=*/;
796 /* Register variable[6]: Result */
797 variable[6] = ATTR_static_type___MMSignature____return_type(variable[0]) /*MMSignature::_return_type*/;
798 /* Register variable[6]: Result */
799 variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*rv*/ == variable[6]) || (( variable[5] /*rv*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*rv*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*rv*/,variable[6])):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*rv*/)( variable[5] /*rv*/, variable[6]) /*Object::==*/)))))));
800 if (UNTAG_Bool(variable[6])) { /*if*/
801 variable[3] = TAG_Bool(true) /*need_for_self=*/;
802 }
803 }
804 /* Register variable[6]: Local variable */
805 /* Register variable[7]: Result */
806 variable[7] = ATTR_static_type___MMSignature____closures(variable[0]) /*MMSignature::_closures*/;
807 variable[6] = variable[7];
808 /* Register variable[7]: Result */
809 variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*clos*/ == NIT_NULL /*null*/) || (( variable[6] /*clos*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*clos*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*clos*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*clos*/)( variable[6] /*clos*/, NIT_NULL /*null*/) /*Object::==*/)))))));
810 if (UNTAG_Bool(variable[7])) { /*if*/
811 /* Register variable[7]: Result */
812 variable[7] = NEW_Array_array___Array___init() /*new Array[MMClosure]*/;
813 variable[6] = variable[7] /*clos=*/;
814 /* Register variable[7]: Result */
815 variable[7] = ATTR_static_type___MMSignature____closures(variable[0]) /*MMSignature::_closures*/;
816 /* Register variable[7]: For iterator */
817 variable[7] = CALL_abstract_collection___Collection___iterator(variable[7])(variable[7]) /*AbstractArrayRead::iterator*/;
818 while (true) { /*for*/
819 /* Register variable[8]: For 'is_ok' result */
820 variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*ArrayIterator::is_ok*/;
821 if (!UNTAG_Bool(variable[8])) break; /*for*/
822 variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
823 /* Register variable[9]: Local variable */
824 variable[9] = variable[8];
825 /* Register variable[10]: Local variable */
826 /* Register variable[11]: Result */
827 variable[11] = CALL_static_type___MMClosure___not_for_self( variable[9] /*c*/)( variable[9] /*c*/) /*MMClosure::not_for_self*/;
828 variable[10] = variable[11];
829 /* Register variable[11]: Result */
830 variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*c2*/ == variable[9] /*c*/) || (( variable[10] /*c2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*c2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*c2*/, variable[9] /*c*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*c2*/)( variable[10] /*c2*/, variable[9] /*c*/) /*Object::==*/)))))));
831 if (UNTAG_Bool(variable[11])) { /*if*/
832 variable[3] = TAG_Bool(true) /*need_for_self=*/;
833 }
834 CALL_abstract_collection___SimpleCollection___add( variable[6] /*clos*/)( variable[6] /*clos*/, variable[10] /*c2*/) /*AbstractArray::add*/;
835 continue_25: while(0);
836 CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*ArrayIterator::next*/;
837 }
838 break_25: while(0);
839 }
840 if (UNTAG_Bool( variable[3] /*need_for_self*/)) { /*if*/
841 /* Register variable[7]: Result */
842 variable[7] = ATTR_static_type___MMSignature____recv(variable[0]) /*MMSignature::_recv*/;
843 /* Register variable[7]: Result */
844 variable[7] = NEW_MMSignature_static_type___MMSignature___init( variable[4] /*p*/, variable[5] /*rv*/, variable[7]) /*new MMSignature*/;
845 variable[2] = variable[7] /*res=*/;
846 /* Register variable[7]: Result */
847 variable[7] = CALL_static_type___MMSignature___closures( variable[2] /*res*/)( variable[2] /*res*/) /*MMSignature::closures*/;
848 CALL_abstract_collection___SimpleCollection___add_all(variable[7])(variable[7], variable[6] /*clos*/) /*SimpleCollection::add_all*/;
849 } else { /*if*/
850 variable[2] = variable[0] /*res=*/;
851 }
852 ATTR_static_type___MMSignature____not_for_self_cache(variable[0]) /*MMSignature::_not_for_self_cache*/ = variable[2] /*res*/;
853 variable[1] = variable[2] /*res*/;
854 goto return_label23;
855 return_label23: while(false);
856 tracehead = trace.prev;
857 return variable[1];
858 }
859 void static_type___MMSignature___init(val_t self, val_t param0, val_t param1, val_t param2, int* init_table) {
860 struct trace_t trace = {NULL, NULL, 216, LOCATE_static_type___MMSignature___init};
861 val_t variable[6];
862 struct WBT_ **closurevariable = NULL;
863 trace.prev = tracehead; tracehead = &trace;
864 trace.file = LOCATE_static_type;
865 /* Register variable[0]: Local variable */
866 variable[0] = self;
867 /* Register variable[1]: Local variable */
868 variable[1] = param0;
869 /* Register variable[2]: Local variable */
870 variable[2] = param1;
871 /* Register variable[3]: Local variable */
872 variable[3] = param2;
873 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMSignature].i]) return;
874 /* Register variable[4]: Method return value and escape marker */
875 /* Register variable[5]: Result */
876 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*params*/ == NIT_NULL /*null*/) || (( variable[1] /*params*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*params*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*params*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*params*/)( variable[1] /*params*/, NIT_NULL /*null*/) /*Object::==*/)))))));
877 if (!UNTAG_Bool(variable[5])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMSignature___init, LOCATE_static_type, 218); nit_exit(1);}
878 ATTR_static_type___MMSignature____params(variable[0]) /*MMSignature::_params*/ = variable[1] /*params*/;
879 ATTR_static_type___MMSignature____return_type(variable[0]) /*MMSignature::_return_type*/ = variable[2] /*return_type*/;
880 ATTR_static_type___MMSignature____recv(variable[0]) /*MMSignature::_recv*/ = variable[3] /*r*/;
881 return_label26: while(false);
882 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMSignature].i] = 1;
883 tracehead = trace.prev;
884 return;
885 }
886 val_t static_type___MMClosure___signature(val_t self) {
887 struct trace_t trace = {NULL, NULL, 227, LOCATE_static_type___MMClosure___signature};
888 val_t *variable = NULL;
889 struct WBT_ **closurevariable = NULL;
890 trace.prev = tracehead; tracehead = &trace;
891 trace.file = LOCATE_static_type;
892 tracehead = trace.prev;
893 return ATTR_static_type___MMClosure____signature( self) /*MMClosure::_signature*/;
894 }
895 val_t static_type___MMClosure___is_break(val_t self) {
896 struct trace_t trace = {NULL, NULL, 230, LOCATE_static_type___MMClosure___is_break};
897 val_t *variable = NULL;
898 struct WBT_ **closurevariable = NULL;
899 trace.prev = tracehead; tracehead = &trace;
900 trace.file = LOCATE_static_type;
901 tracehead = trace.prev;
902 return ATTR_static_type___MMClosure____is_break( self) /*MMClosure::_is_break*/;
903 }
904 val_t static_type___MMClosure___is_optional(val_t self) {
905 struct trace_t trace = {NULL, NULL, 234, LOCATE_static_type___MMClosure___is_optional};
906 val_t *variable = NULL;
907 struct WBT_ **closurevariable = NULL;
908 trace.prev = tracehead; tracehead = &trace;
909 trace.file = LOCATE_static_type;
910 tracehead = trace.prev;
911 return ATTR_static_type___MMClosure____is_optional( self) /*MMClosure::_is_optional*/;
912 }
913 val_t static_type___MMClosure___adaptation_to(val_t self, val_t param0) {
914 struct trace_t trace = {NULL, NULL, 238, LOCATE_static_type___MMClosure___adaptation_to};
915 val_t variable[6];
916 struct WBT_ **closurevariable = NULL;
917 trace.prev = tracehead; tracehead = &trace;
918 trace.file = LOCATE_static_type;
919 /* Register variable[0]: Local variable */
920 variable[0] = self;
921 /* Register variable[1]: Local variable */
922 variable[1] = param0;
923 /* Register variable[2]: Method return value and escape marker */
924 /* Register variable[3]: Result */
925 variable[3] = ATTR_static_type___MMClosure____signature(variable[0]) /*MMClosure::_signature*/;
926 /* Register variable[3]: Result */
927 variable[3] = CALL_static_type___MMSignature___adaptation_to(variable[3])(variable[3], variable[1] /*r*/) /*MMSignature::adaptation_to*/;
928 /* Register variable[4]: Result */
929 variable[4] = ATTR_static_type___MMClosure____is_break(variable[0]) /*MMClosure::_is_break*/;
930 /* Register variable[5]: Result */
931 variable[5] = ATTR_static_type___MMClosure____is_optional(variable[0]) /*MMClosure::_is_optional*/;
932 /* Register variable[3]: Result */
933 variable[3] = NEW_MMClosure_static_type___MMClosure___init(variable[3], variable[4], variable[5]) /*new MMClosure*/;
934 variable[2] = variable[3];
935 goto return_label27;
936 return_label27: while(false);
937 tracehead = trace.prev;
938 return variable[2];
939 }
940 void static_type___MMClosure___init(val_t self, val_t param0, val_t param1, val_t param2, int* init_table) {
941 struct trace_t trace = {NULL, NULL, 244, LOCATE_static_type___MMClosure___init};
942 val_t variable[5];
943 struct WBT_ **closurevariable = NULL;
944 trace.prev = tracehead; tracehead = &trace;
945 trace.file = LOCATE_static_type;
946 /* Register variable[0]: Local variable */
947 variable[0] = self;
948 /* Register variable[1]: Local variable */
949 variable[1] = param0;
950 /* Register variable[2]: Local variable */
951 variable[2] = param1;
952 /* Register variable[3]: Local variable */
953 variable[3] = param2;
954 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMClosure].i]) return;
955 /* Register variable[4]: Method return value and escape marker */
956 ATTR_static_type___MMClosure____signature(variable[0]) /*MMClosure::_signature*/ = variable[1] /*s*/;
957 ATTR_static_type___MMClosure____is_break(variable[0]) /*MMClosure::_is_break*/ = variable[2] /*is_break*/;
958 ATTR_static_type___MMClosure____is_optional(variable[0]) /*MMClosure::_is_optional*/ = variable[3] /*is_optional*/;
959 return_label28: while(false);
960 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMClosure].i] = 1;
961 tracehead = trace.prev;
962 return;
963 }
964 val_t static_type___MMClosure___not_for_self(val_t self) {
965 struct trace_t trace = {NULL, NULL, 251, LOCATE_static_type___MMClosure___not_for_self};
966 val_t variable[5];
967 struct WBT_ **closurevariable = NULL;
968 trace.prev = tracehead; tracehead = &trace;
969 trace.file = LOCATE_static_type;
970 /* Register variable[0]: Local variable */
971 variable[0] = self;
972 /* Register variable[1]: Method return value and escape marker */
973 /* Register variable[2]: Local variable */
974 /* Register variable[3]: Result */
975 variable[3] = ATTR_static_type___MMClosure____signature(variable[0]) /*MMClosure::_signature*/;
976 /* Register variable[3]: Result */
977 variable[3] = CALL_static_type___MMSignature___not_for_self(variable[3])(variable[3]) /*MMSignature::not_for_self*/;
978 variable[2] = variable[3];
979 /* Register variable[3]: Result */
980 variable[3] = ATTR_static_type___MMClosure____signature(variable[0]) /*MMClosure::_signature*/;
981 /* Register variable[3]: Result */
982 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*sig*/ == variable[3]) || (( variable[2] /*sig*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*sig*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*sig*/,variable[3])):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*sig*/)( variable[2] /*sig*/, variable[3]) /*Object::==*/)))))));
983 if (UNTAG_Bool(variable[3])) { /*if*/
984 /* Register variable[3]: Result */
985 variable[3] = ATTR_static_type___MMClosure____is_break(variable[0]) /*MMClosure::_is_break*/;
986 /* Register variable[4]: Result */
987 variable[4] = ATTR_static_type___MMClosure____is_optional(variable[0]) /*MMClosure::_is_optional*/;
988 /* Register variable[3]: Result */
989 variable[3] = NEW_MMClosure_static_type___MMClosure___init( variable[2] /*sig*/, variable[3], variable[4]) /*new MMClosure*/;
990 variable[1] = variable[3];
991 goto return_label29;
992 } else { /*if*/
993 variable[1] = variable[0];
994 goto return_label29;
995 }
996 return_label29: while(false);
997 tracehead = trace.prev;
998 return variable[1];
999 }
1000 val_t static_type___MMClosure_____l(val_t self, val_t param0) {
1001 struct trace_t trace = {NULL, NULL, 261, LOCATE_static_type___MMClosure_____l};
1002 val_t variable[5];
1003 struct WBT_ **closurevariable = NULL;
1004 trace.prev = tracehead; tracehead = &trace;
1005 trace.file = LOCATE_static_type;
1006 /* Register variable[0]: Local variable */
1007 variable[0] = self;
1008 /* Register variable[1]: Local variable */
1009 variable[1] = param0;
1010 /* Register variable[2]: Method return value and escape marker */
1011 /* Register variable[3]: Result */
1012 variable[3] = CALL_static_type___MMClosure___is_optional( variable[1] /*c*/)( variable[1] /*c*/) /*MMClosure::is_optional*/;
1013 /* Ensure var variable[3]: Left 'and' operand*/
1014 if (UNTAG_Bool(variable[3])) { /* and */
1015 /* Register variable[3]: Result */
1016 variable[3] = CALL_static_type___MMClosure___is_optional(variable[0])(variable[0]) /*MMClosure::is_optional*/;
1017 variable[3] = TAG_Bool(!UNTAG_Bool(variable[3]));
1018 }
1019 /* Register variable[3]: Result */
1020 if (UNTAG_Bool(variable[3])) { /*if*/
1021 variable[2] = TAG_Bool(false);
1022 goto return_label30;
1023 }
1024 /* Register variable[3]: Result */
1025 variable[3] = CALL_static_type___MMClosure___is_break( variable[1] /*c*/)( variable[1] /*c*/) /*MMClosure::is_break*/;
1026 variable[3] = TAG_Bool(!UNTAG_Bool(variable[3])) /* Ensure var: Left 'and' operand*/;
1027 if (UNTAG_Bool(variable[3])) { /* and */
1028 /* Register variable[3]: Result */
1029 variable[3] = CALL_static_type___MMClosure___is_break(variable[0])(variable[0]) /*MMClosure::is_break*/;
1030 }
1031 /* Register variable[3]: Result */
1032 if (UNTAG_Bool(variable[3])) { /*if*/
1033 variable[2] = TAG_Bool(false);
1034 goto return_label30;
1035 }
1036 /* Register variable[3]: Result */
1037 variable[3] = CALL_static_type___MMClosure___signature( variable[1] /*c*/)( variable[1] /*c*/) /*MMClosure::signature*/;
1038 /* Register variable[4]: Result */
1039 variable[4] = CALL_static_type___MMClosure___signature(variable[0])(variable[0]) /*MMClosure::signature*/;
1040 /* Register variable[3]: Result */
1041 variable[3] = CALL_static_type___MMSignature_____l(variable[3])(variable[3], variable[4]) /*MMSignature::<*/;
1042 variable[2] = variable[3];
1043 goto return_label30;
1044 return_label30: while(false);
1045 tracehead = trace.prev;
1046 return variable[2];
1047 }
1048 val_t static_type___MMAncestor___to_s(val_t self) {
1049 struct trace_t trace = {NULL, NULL, 288, LOCATE_static_type___MMAncestor___to_s};
1050 val_t variable[3];
1051 struct WBT_ **closurevariable = NULL;
1052 trace.prev = tracehead; tracehead = &trace;
1053 trace.file = LOCATE_static_type;
1054 /* Register variable[0]: Local variable */
1055 variable[0] = self;
1056 /* Register variable[1]: Method return value and escape marker */
1057 /* Register variable[2]: Result */
1058 variable[2] = CALL_static_type___MMAncestor___stype(variable[0])(variable[0]) /*MMAncestor::stype*/;
1059 /* Register variable[2]: Result */
1060 variable[2] = TAG_Bool((variable[2] == NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], NIT_NULL /*null*/) /*Object::==*/)))));
1061 if (UNTAG_Bool(variable[2])) { /*if*/
1062 /* Register variable[2]: Result */
1063 variable[2] = CALL_static_type___MMAncestor___local_class(variable[0])(variable[0]) /*MMAncestor::local_class*/;
1064 /* Register variable[2]: Result */
1065 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*MMLocalClass::to_s*/;
1066 variable[1] = variable[2];
1067 goto return_label31;
1068 } else { /*if*/
1069 /* Register variable[2]: Result */
1070 variable[2] = CALL_static_type___MMAncestor___stype(variable[0])(variable[0]) /*MMAncestor::stype*/;
1071 /* Register variable[2]: Result */
1072 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Object::to_s*/;
1073 variable[1] = variable[2];
1074 goto return_label31;
1075 }
1076 return_label31: while(false);
1077 tracehead = trace.prev;
1078 return variable[1];
1079 }
1080 val_t static_type___MMAncestor___stype(val_t self) {
1081 struct trace_t trace = {NULL, NULL, 271, LOCATE_static_type___MMAncestor___stype};
1082 val_t *variable = NULL;
1083 struct WBT_ **closurevariable = NULL;
1084 trace.prev = tracehead; tracehead = &trace;
1085 trace.file = LOCATE_static_type;
1086 tracehead = trace.prev;
1087 return ATTR_static_type___MMAncestor____stype( self) /*MMAncestor::_stype*/;
1088 }
1089 void static_type___MMAncestor___stype__eq(val_t self, val_t param0) {
1090 struct trace_t trace = {NULL, NULL, 271, LOCATE_static_type___MMAncestor___stype__eq};
1091 val_t *variable = NULL;
1092 struct WBT_ **closurevariable = NULL;
1093 trace.prev = tracehead; tracehead = &trace;
1094 trace.file = LOCATE_static_type;
1095 ATTR_static_type___MMAncestor____stype( self) /*MMAncestor::_stype*/ = param0;
1096 tracehead = trace.prev;
1097 return;
1098 }
1099 val_t static_type___MMAncestor___inheriter(val_t self) {
1100 struct trace_t trace = {NULL, NULL, 274, LOCATE_static_type___MMAncestor___inheriter};
1101 val_t *variable = NULL;
1102 struct WBT_ **closurevariable = NULL;
1103 trace.prev = tracehead; tracehead = &trace;
1104 trace.file = LOCATE_static_type;
1105 tracehead = trace.prev;
1106 return ATTR_static_type___MMAncestor____inheriter( self) /*MMAncestor::_inheriter*/;
1107 }
1108 void static_type___MMAncestor___inheriter__eq(val_t self, val_t param0) {
1109 struct trace_t trace = {NULL, NULL, 274, LOCATE_static_type___MMAncestor___inheriter__eq};
1110 val_t *variable = NULL;
1111 struct WBT_ **closurevariable = NULL;
1112 trace.prev = tracehead; tracehead = &trace;
1113 trace.file = LOCATE_static_type;
1114 ATTR_static_type___MMAncestor____inheriter( self) /*MMAncestor::_inheriter*/ = param0;
1115 tracehead = trace.prev;
1116 return;
1117 }
1118 val_t static_type___MMAncestor___is_reffinement(val_t self) {
1119 struct trace_t trace = {NULL, NULL, 277, LOCATE_static_type___MMAncestor___is_reffinement};
1120 val_t variable[4];
1121 struct WBT_ **closurevariable = NULL;
1122 trace.prev = tracehead; tracehead = &trace;
1123 trace.file = LOCATE_static_type;
1124 /* Register variable[0]: Local variable */
1125 variable[0] = self;
1126 /* Register variable[1]: Method return value and escape marker */
1127 /* Register variable[2]: Result */
1128 variable[2] = CALL_static_type___MMAncestor___stype(variable[0])(variable[0]) /*MMAncestor::stype*/;
1129 /* Register variable[2]: Result */
1130 variable[2] = CALL_static_type___MMType___module(variable[2])(variable[2]) /*MMType::module*/;
1131 /* Register variable[3]: Result */
1132 variable[3] = CALL_static_type___MMAncestor___stype(variable[0])(variable[0]) /*MMAncestor::stype*/;
1133 /* Register variable[3]: Result */
1134 variable[3] = CALL_static_type___MMType___module(variable[3])(variable[3]) /*MMType::module*/;
1135 /* Register variable[2]: Result */
1136 variable[2] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[2] == variable[3]) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2],variable[3])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], variable[3]) /*Object::==*/)))))));
1137 variable[1] = variable[2];
1138 goto return_label32;
1139 return_label32: while(false);
1140 tracehead = trace.prev;
1141 return variable[1];
1142 }
1143 val_t static_type___MMAncestor___is_specialisation(val_t self) {
1144 struct trace_t trace = {NULL, NULL, 281, LOCATE_static_type___MMAncestor___is_specialisation};
1145 val_t variable[4];
1146 struct WBT_ **closurevariable = NULL;
1147 trace.prev = tracehead; tracehead = &trace;
1148 trace.file = LOCATE_static_type;
1149 /* Register variable[0]: Local variable */
1150 variable[0] = self;
1151 /* Register variable[1]: Method return value and escape marker */
1152 /* Register variable[2]: Result */
1153 variable[2] = CALL_static_type___MMAncestor___stype(variable[0])(variable[0]) /*MMAncestor::stype*/;
1154 /* Register variable[2]: Result */
1155 variable[2] = CALL_static_type___MMType___local_class(variable[2])(variable[2]) /*MMType::local_class*/;
1156 /* Register variable[2]: Result */
1157 variable[2] = CALL_abstractmetamodel___MMLocalClass___global(variable[2])(variable[2]) /*MMLocalClass::global*/;
1158 /* Register variable[3]: Result */
1159 variable[3] = CALL_static_type___MMAncestor___inheriter(variable[0])(variable[0]) /*MMAncestor::inheriter*/;
1160 /* Register variable[3]: Result */
1161 variable[3] = CALL_static_type___MMType___local_class(variable[3])(variable[3]) /*MMType::local_class*/;
1162 /* Register variable[3]: Result */
1163 variable[3] = CALL_abstractmetamodel___MMLocalClass___global(variable[3])(variable[3]) /*MMLocalClass::global*/;
1164 /* Register variable[2]: Result */
1165 variable[2] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[2] == variable[3]) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2],variable[3])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], variable[3]) /*Object::==*/)))))));
1166 variable[1] = variable[2];
1167 goto return_label33;
1168 return_label33: while(false);
1169 tracehead = trace.prev;
1170 return variable[1];
1171 }
1172 val_t static_type___MMAncestor___local_class(val_t self) {
1173 struct trace_t trace = {NULL, NULL, 285, LOCATE_static_type___MMAncestor___local_class};
1174 val_t *variable = NULL;
1175 struct WBT_ **closurevariable = NULL;
1176 trace.prev = tracehead; tracehead = &trace;
1177 trace.file = LOCATE_static_type;
1178 fprintf(stderr, "Deferred method called");
1179 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 285);
1180 nit_exit(1);
1181 tracehead = trace.prev;
1182 return NIT_NULL;
1183 }
1184 void static_type___MMAncestor___init(val_t self, int* init_table) {
1185 struct trace_t trace = {NULL, NULL, 0, LOCATE_static_type___MMAncestor___init};
1186 val_t *variable = NULL;
1187 struct WBT_ **closurevariable = NULL;
1188 trace.prev = tracehead; tracehead = &trace;
1189 trace.file = LOCATE_static_type;
1190 tracehead = trace.prev;
1191 return;
1192 }
1193 val_t static_type___MMType___module(val_t self) {
1194 struct trace_t trace = {NULL, NULL, 301, LOCATE_static_type___MMType___module};
1195 val_t *variable = NULL;
1196 struct WBT_ **closurevariable = NULL;
1197 trace.prev = tracehead; tracehead = &trace;
1198 trace.file = LOCATE_static_type;
1199 fprintf(stderr, "Deferred method called");
1200 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 301);
1201 nit_exit(1);
1202 tracehead = trace.prev;
1203 return NIT_NULL;
1204 }
1205 val_t static_type___MMType___local_class(val_t self) {
1206 struct trace_t trace = {NULL, NULL, 304, LOCATE_static_type___MMType___local_class};
1207 val_t *variable = NULL;
1208 struct WBT_ **closurevariable = NULL;
1209 trace.prev = tracehead; tracehead = &trace;
1210 trace.file = LOCATE_static_type;
1211 fprintf(stderr, "Deferred method called");
1212 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 304);
1213 nit_exit(1);
1214 tracehead = trace.prev;
1215 return NIT_NULL;
1216 }
1217 val_t static_type___MMType___is_valid(val_t self) {
1218 struct trace_t trace = {NULL, NULL, 307, LOCATE_static_type___MMType___is_valid};
1219 val_t variable[2];
1220 struct WBT_ **closurevariable = NULL;
1221 trace.prev = tracehead; tracehead = &trace;
1222 trace.file = LOCATE_static_type;
1223 /* Register variable[0]: Local variable */
1224 variable[0] = self;
1225 /* Register variable[1]: Method return value and escape marker */
1226 variable[1] = TAG_Bool(true);
1227 goto return_label34;
1228 return_label34: while(false);
1229 tracehead = trace.prev;
1230 return variable[1];
1231 }
1232 val_t static_type___MMType_____l(val_t self, val_t param0) {
1233 struct trace_t trace = {NULL, NULL, 311, LOCATE_static_type___MMType_____l};
1234 val_t *variable = NULL;
1235 struct WBT_ **closurevariable = NULL;
1236 trace.prev = tracehead; tracehead = &trace;
1237 trace.file = LOCATE_static_type;
1238 fprintf(stderr, "Deferred method called");
1239 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 311);
1240 nit_exit(1);
1241 tracehead = trace.prev;
1242 return NIT_NULL;
1243 }
1244 val_t static_type___MMType___is_supertype(val_t self, val_t param0) {
1245 struct trace_t trace = {NULL, NULL, 314, LOCATE_static_type___MMType___is_supertype};
1246 val_t *variable = NULL;
1247 struct WBT_ **closurevariable = NULL;
1248 trace.prev = tracehead; tracehead = &trace;
1249 trace.file = LOCATE_static_type;
1250 fprintf(stderr, "Deferred method called");
1251 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 314);
1252 nit_exit(1);
1253 tracehead = trace.prev;
1254 return NIT_NULL;
1255 }
1256 val_t static_type___MMType___for_module(val_t self, val_t param0) {
1257 struct trace_t trace = {NULL, NULL, 319, LOCATE_static_type___MMType___for_module};
1258 val_t *variable = NULL;
1259 struct WBT_ **closurevariable = NULL;
1260 trace.prev = tracehead; tracehead = &trace;
1261 trace.file = LOCATE_static_type;
1262 fprintf(stderr, "Deferred method called");
1263 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 319);
1264 nit_exit(1);
1265 tracehead = trace.prev;
1266 return NIT_NULL;
1267 }
1268 val_t static_type___MMType___adapt_to(val_t self, val_t param0) {
1269 struct trace_t trace = {NULL, NULL, 322, LOCATE_static_type___MMType___adapt_to};
1270 val_t *variable = NULL;
1271 struct WBT_ **closurevariable = NULL;
1272 trace.prev = tracehead; tracehead = &trace;
1273 trace.file = LOCATE_static_type;
1274 fprintf(stderr, "Deferred method called");
1275 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 322);
1276 nit_exit(1);
1277 tracehead = trace.prev;
1278 return NIT_NULL;
1279 }
1280 val_t static_type___MMType___upcast_for(val_t self, val_t param0) {
1281 struct trace_t trace = {NULL, NULL, 326, LOCATE_static_type___MMType___upcast_for};
1282 val_t *variable = NULL;
1283 struct WBT_ **closurevariable = NULL;
1284 trace.prev = tracehead; tracehead = &trace;
1285 trace.file = LOCATE_static_type;
1286 fprintf(stderr, "Deferred method called");
1287 fprintf(stderr, " (%s:%d)\n", LOCATE_static_type, 326);
1288 nit_exit(1);
1289 tracehead = trace.prev;
1290 return NIT_NULL;
1291 }
1292 val_t static_type___MMType___not_for_self(val_t self) {
1293 struct trace_t trace = {NULL, NULL, 348, LOCATE_static_type___MMType___not_for_self};
1294 val_t variable[2];
1295 struct WBT_ **closurevariable = NULL;
1296 trace.prev = tracehead; tracehead = &trace;
1297 trace.file = LOCATE_static_type;
1298 /* Register variable[0]: Local variable */
1299 variable[0] = self;
1300 /* Register variable[1]: Method return value and escape marker */
1301 variable[1] = variable[0];
1302 goto return_label35;
1303 return_label35: while(false);
1304 tracehead = trace.prev;
1305 return variable[1];
1306 }
1307 val_t static_type___MMType___is_nullable(val_t self) {
1308 struct trace_t trace = {NULL, NULL, 355, LOCATE_static_type___MMType___is_nullable};
1309 val_t variable[2];
1310 struct WBT_ **closurevariable = NULL;
1311 trace.prev = tracehead; tracehead = &trace;
1312 trace.file = LOCATE_static_type;
1313 /* Register variable[0]: Local variable */
1314 variable[0] = self;
1315 /* Register variable[1]: Method return value and escape marker */
1316 variable[1] = TAG_Bool(false);
1317 goto return_label36;
1318 return_label36: while(false);
1319 tracehead = trace.prev;
1320 return variable[1];
1321 }
1322 val_t static_type___MMType___as_nullable(val_t self) {
1323 struct trace_t trace = {NULL, NULL, 358, LOCATE_static_type___MMType___as_nullable};
1324 val_t variable[5];
1325 struct WBT_ **closurevariable = NULL;
1326 trace.prev = tracehead; tracehead = &trace;
1327 trace.file = LOCATE_static_type;
1328 /* Register variable[0]: Local variable */
1329 variable[0] = self;
1330 /* Register variable[1]: Method return value and escape marker */
1331 /* Register variable[2]: Local variable */
1332 /* Register variable[3]: Result */
1333 variable[3] = ATTR_static_type___MMType____as_nullable_cache(variable[0]) /*MMType::_as_nullable_cache*/;
1334 variable[2] = variable[3];
1335 /* Register variable[3]: Result */
1336 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*cache*/ == NIT_NULL /*null*/) || (( variable[2] /*cache*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*cache*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*cache*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*cache*/)( variable[2] /*cache*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1337 if (UNTAG_Bool(variable[3])) { /*if*/
1338 variable[1] = variable[2] /*cache*/;
1339 goto return_label37;
1340 }
1341 /* Register variable[3]: Local variable */
1342 /* Register variable[4]: Result */
1343 variable[4] = NEW_MMNullableType_static_type___MMNullableType___init(variable[0]) /*new MMNullableType*/;
1344 variable[3] = variable[4];
1345 ATTR_static_type___MMType____as_nullable_cache(variable[0]) /*MMType::_as_nullable_cache*/ = variable[3] /*res*/;
1346 variable[1] = variable[3] /*res*/;
1347 goto return_label37;
1348 return_label37: while(false);
1349 tracehead = trace.prev;
1350 return variable[1];
1351 }
1352 val_t static_type___MMType___as_notnull(val_t self) {
1353 struct trace_t trace = {NULL, NULL, 368, LOCATE_static_type___MMType___as_notnull};
1354 val_t variable[2];
1355 struct WBT_ **closurevariable = NULL;
1356 trace.prev = tracehead; tracehead = &trace;
1357 trace.file = LOCATE_static_type;
1358 /* Register variable[0]: Local variable */
1359 variable[0] = self;
1360 /* Register variable[1]: Method return value and escape marker */
1361 variable[1] = variable[0];
1362 goto return_label38;
1363 return_label38: while(false);
1364 tracehead = trace.prev;
1365 return variable[1];
1366 }
1367 void static_type___MMType___init(val_t self, int* init_table) {
1368 struct trace_t trace = {NULL, NULL, 0, LOCATE_static_type___MMType___init};
1369 val_t *variable = NULL;
1370 struct WBT_ **closurevariable = NULL;
1371 trace.prev = tracehead; tracehead = &trace;
1372 trace.file = LOCATE_static_type;
1373 tracehead = trace.prev;
1374 return;
1375 }
1376 val_t static_type___MMNullableType___to_s(val_t self) {
1377 struct trace_t trace = {NULL, NULL, 391, LOCATE_static_type___MMNullableType___to_s};
1378 static val_t once_value_40 = NIT_NULL; /* Once value for string variable[3]*/
1379 static val_t once_value_41 = NIT_NULL; /* Once value for string variable[3]*/
1380 val_t variable[4];
1381 struct WBT_ **closurevariable = NULL;
1382 trace.prev = tracehead; tracehead = &trace;
1383 trace.file = LOCATE_static_type;
1384 /* Register variable[0]: Local variable */
1385 variable[0] = self;
1386 /* Register variable[1]: Method return value and escape marker */
1387 variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
1388 /* Register variable[3]: Once String constant */
1389 if (once_value_40 != NIT_NULL) variable[3] = once_value_40;
1390 else {
1391 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("nullable "), TAG_Int(9)) /*new String*/;
1392 once_value_40 = variable[3];
1393 }
1394 /* Register variable[3]: Result */
1395 /* Ensure var variable[3]: super-string element*/
1396 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
1397 /* Register variable[3]: Result */
1398 variable[3] = ATTR_static_type___MMNullableType____base_type(variable[0]) /*MMNullableType::_base_type*/;
1399 /* Ensure var variable[3]: super-string element*/
1400 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/) /*AbstractArray::add*/;
1401 /* Register variable[3]: Once String constant */
1402 if (once_value_41 != NIT_NULL) variable[3] = once_value_41;
1403 else {
1404 variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
1405 once_value_41 = variable[3];
1406 }
1407 /* Register variable[3]: Result */
1408 /* Ensure var variable[3]: super-string element*/
1409 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
1410 /* Register variable[2]: Result */
1411 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Object::to_s*/;
1412 variable[1] = variable[2];
1413 goto return_label39;
1414 return_label39: while(false);
1415 tracehead = trace.prev;
1416 return variable[1];
1417 }
1418 val_t static_type___MMNullableType___module(val_t self) {
1419 struct trace_t trace = {NULL, NULL, 382, LOCATE_static_type___MMNullableType___module};
1420 val_t variable[3];
1421 struct WBT_ **closurevariable = NULL;
1422 trace.prev = tracehead; tracehead = &trace;
1423 trace.file = LOCATE_static_type;
1424 /* Register variable[0]: Local variable */
1425 variable[0] = self;
1426 /* Register variable[1]: Method return value and escape marker */
1427 /* Register variable[2]: Result */
1428 variable[2] = ATTR_static_type___MMNullableType____base_type(variable[0]) /*MMNullableType::_base_type*/;
1429 /* Register variable[2]: Result */
1430 variable[2] = CALL_static_type___MMType___module(variable[2])(variable[2]) /*MMType::module*/;
1431 variable[1] = variable[2];
1432 goto return_label42;
1433 return_label42: while(false);
1434 tracehead = trace.prev;
1435 return variable[1];
1436 }
1437 val_t static_type___MMNullableType___local_class(val_t self) {
1438 struct trace_t trace = {NULL, NULL, 384, LOCATE_static_type___MMNullableType___local_class};
1439 val_t variable[3];
1440 struct WBT_ **closurevariable = NULL;
1441 trace.prev = tracehead; tracehead = &trace;
1442 trace.file = LOCATE_static_type;
1443 /* Register variable[0]: Local variable */
1444 variable[0] = self;
1445 /* Register variable[1]: Method return value and escape marker */
1446 /* Register variable[2]: Result */
1447 variable[2] = ATTR_static_type___MMNullableType____base_type(variable[0]) /*MMNullableType::_base_type*/;
1448 /* Register variable[2]: Result */
1449 variable[2] = CALL_static_type___MMType___local_class(variable[2])(variable[2]) /*MMType::local_class*/;
1450 variable[1] = variable[2];
1451 goto return_label43;
1452 return_label43: while(false);
1453 tracehead = trace.prev;
1454 return variable[1];
1455 }
1456 val_t static_type___MMNullableType___is_valid(val_t self) {
1457 struct trace_t trace = {NULL, NULL, 376, LOCATE_static_type___MMNullableType___is_valid};
1458 val_t variable[3];
1459 struct WBT_ **closurevariable = NULL;
1460 trace.prev = tracehead; tracehead = &trace;
1461 trace.file = LOCATE_static_type;
1462 /* Register variable[0]: Local variable */
1463 variable[0] = self;
1464 /* Register variable[1]: Method return value and escape marker */
1465 /* Register variable[2]: Result */
1466 variable[2] = ATTR_static_type___MMNullableType____base_type(variable[0]) /*MMNullableType::_base_type*/;
1467 /* Register variable[2]: Result */
1468 variable[2] = CALL_static_type___MMType___is_valid(variable[2])(variable[2]) /*MMType::is_valid*/;
1469 variable[1] = variable[2];
1470 goto return_label44;
1471 return_label44: while(false);
1472 tracehead = trace.prev;
1473 return variable[1];
1474 }
1475 val_t static_type___MMNullableType_____l(val_t self, val_t param0) {
1476 struct trace_t trace = {NULL, NULL, 386, LOCATE_static_type___MMNullableType_____l};
1477 val_t variable[5];
1478 struct WBT_ **closurevariable = NULL;
1479 trace.prev = tracehead; tracehead = &trace;
1480 trace.file = LOCATE_static_type;
1481 /* Register variable[0]: Local variable */
1482 variable[0] = self;
1483 /* Register variable[1]: Local variable */
1484 variable[1] = param0;
1485 /* Register variable[2]: Method return value and escape marker */
1486 /* Register variable[3]: Result */
1487 variable[3] = TAG_Bool(( variable[1] /*t*/==NIT_NULL) || VAL_ISA( variable[1] /*t*/, COLOR_MMNullableType, ID_MMNullableType)) /*cast MMNullableType*/;
1488 /* Ensure var variable[3]: Left 'and' operand*/
1489 if (UNTAG_Bool(variable[3])) { /* and */
1490 /* Register variable[3]: Result */
1491 variable[3] = ATTR_static_type___MMNullableType____base_type(variable[0]) /*MMNullableType::_base_type*/;
1492 /* Register variable[4]: Result */
1493 variable[4] = CALL_static_type___MMType___as_notnull( variable[1] /*t*/)( variable[1] /*t*/) /*MMNullableType::as_notnull*/;
1494 /* Register variable[3]: Result */
1495 variable[3] = CALL_static_type___MMType_____l(variable[3])(variable[3], variable[4]) /*MMType::<*/;
1496 }
1497 /* Register variable[3]: Result */
1498 variable[2] = variable[3];
1499 goto return_label45;
1500 return_label45: while(false);
1501 tracehead = trace.prev;
1502 return variable[2];
1503 }
1504 val_t static_type___MMNullableType___is_supertype(val_t self, val_t param0) {
1505 struct trace_t trace = {NULL, NULL, 396, LOCATE_static_type___MMNullableType___is_supertype};
1506 val_t variable[4];
1507 struct WBT_ **closurevariable = NULL;
1508 trace.prev = tracehead; tracehead = &trace;
1509 trace.file = LOCATE_static_type;
1510 /* Register variable[0]: Local variable */
1511 variable[0] = self;
1512 /* Register variable[1]: Local variable */
1513 variable[1] = param0;
1514 /* Register variable[2]: Method return value and escape marker */
1515 /* Register variable[3]: Result */
1516 variable[3] = ATTR_static_type___MMNullableType____base_type(variable[0]) /*MMNullableType::_base_type*/;
1517 /* Register variable[3]: Result */
1518 variable[3] = CALL_static_type___MMType___is_supertype(variable[3])(variable[3], variable[1] /*t*/) /*MMType::is_supertype*/;
1519 variable[2] = variable[3];
1520 goto return_label46;
1521 return_label46: while(false);
1522 tracehead = trace.prev;
1523 return variable[2];
1524 }
1525 val_t static_type___MMNullableType___for_module(val_t self, val_t param0) {
1526 struct trace_t trace = {NULL, NULL, 401, LOCATE_static_type___MMNullableType___for_module};
1527 val_t variable[4];
1528 struct WBT_ **closurevariable = NULL;
1529 trace.prev = tracehead; tracehead = &trace;
1530 trace.file = LOCATE_static_type;
1531 /* Register variable[0]: Local variable */
1532 variable[0] = self;
1533 /* Register variable[1]: Local variable */
1534 variable[1] = param0;
1535 /* Register variable[2]: Method return value and escape marker */
1536 /* Register variable[3]: Result */
1537 variable[3] = ATTR_static_type___MMNullableType____base_type(variable[0]) /*MMNullableType::_base_type*/;
1538 /* Register variable[3]: Result */
1539 variable[3] = CALL_static_type___MMType___for_module(variable[3])(variable[3], variable[1] /*mod*/) /*MMType::for_module*/;
1540 /* Register variable[3]: Result */
1541 variable[3] = CALL_static_type___MMType___as_nullable(variable[3])(variable[3]) /*MMType::as_nullable*/;
1542 variable[2] = variable[3];
1543 goto return_label47;
1544 return_label47: while(false);
1545 tracehead = trace.prev;
1546 return variable[2];
1547 }
1548 val_t static_type___MMNullableType___adapt_to(val_t self, val_t param0) {
1549 struct trace_t trace = {NULL, NULL, 406, LOCATE_static_type___MMNullableType___adapt_to};
1550 val_t variable[4];
1551 struct WBT_ **closurevariable = NULL;
1552 trace.prev = tracehead; tracehead = &trace;
1553 trace.file = LOCATE_static_type;
1554 /* Register variable[0]: Local variable */
1555 variable[0] = self;
1556 /* Register variable[1]: Local variable */
1557 variable[1] = param0;
1558 /* Register variable[2]: Method return value and escape marker */
1559 /* Register variable[3]: Result */
1560 variable[3] = ATTR_static_type___MMNullableType____base_type(variable[0]) /*MMNullableType::_base_type*/;
1561 /* Register variable[3]: Result */
1562 variable[3] = CALL_static_type___MMType___adapt_to(variable[3])(variable[3], variable[1] /*recv*/) /*MMType::adapt_to*/;
1563 /* Register variable[3]: Result */
1564 variable[3] = CALL_static_type___MMType___as_nullable(variable[3])(variable[3]) /*MMType::as_nullable*/;
1565 variable[2] = variable[3];
1566 goto return_label48;
1567 return_label48: while(false);
1568 tracehead = trace.prev;
1569 return variable[2];
1570 }
1571 val_t static_type___MMNullableType___upcast_for(val_t self, val_t param0) {
1572 struct trace_t trace = {NULL, NULL, 411, LOCATE_static_type___MMNullableType___upcast_for};
1573 val_t variable[4];
1574 struct WBT_ **closurevariable = NULL;
1575 trace.prev = tracehead; tracehead = &trace;
1576 trace.file = LOCATE_static_type;
1577 /* Register variable[0]: Local variable */
1578 variable[0] = self;
1579 /* Register variable[1]: Local variable */
1580 variable[1] = param0;
1581 /* Register variable[2]: Method return value and escape marker */
1582 /* Register variable[3]: Result */
1583 variable[3] = ATTR_static_type___MMNullableType____base_type(variable[0]) /*MMNullableType::_base_type*/;
1584 /* Register variable[3]: Result */
1585 variable[3] = CALL_static_type___MMType___upcast_for(variable[3])(variable[3], variable[1] /*c*/) /*MMType::upcast_for*/;
1586 variable[2] = variable[3];
1587 goto return_label49;
1588 return_label49: while(false);
1589 tracehead = trace.prev;
1590 return variable[2];
1591 }
1592 val_t static_type___MMNullableType___not_for_self(val_t self) {
1593 struct trace_t trace = {NULL, NULL, 416, LOCATE_static_type___MMNullableType___not_for_self};
1594 val_t variable[3];
1595 struct WBT_ **closurevariable = NULL;
1596 trace.prev = tracehead; tracehead = &trace;
1597 trace.file = LOCATE_static_type;
1598 /* Register variable[0]: Local variable */
1599 variable[0] = self;
1600 /* Register variable[1]: Method return value and escape marker */
1601 /* Register variable[2]: Result */
1602 variable[2] = ATTR_static_type___MMNullableType____base_type(variable[0]) /*MMNullableType::_base_type*/;
1603 /* Register variable[2]: Result */
1604 variable[2] = CALL_static_type___MMType___not_for_self(variable[2])(variable[2]) /*MMType::not_for_self*/;
1605 /* Register variable[2]: Result */
1606 variable[2] = CALL_static_type___MMType___as_nullable(variable[2])(variable[2]) /*MMType::as_nullable*/;
1607 variable[1] = variable[2];
1608 goto return_label50;
1609 return_label50: while(false);
1610 tracehead = trace.prev;
1611 return variable[1];
1612 }
1613 val_t static_type___MMNullableType___is_nullable(val_t self) {
1614 struct trace_t trace = {NULL, NULL, 377, LOCATE_static_type___MMNullableType___is_nullable};
1615 val_t variable[2];
1616 struct WBT_ **closurevariable = NULL;
1617 trace.prev = tracehead; tracehead = &trace;
1618 trace.file = LOCATE_static_type;
1619 /* Register variable[0]: Local variable */
1620 variable[0] = self;
1621 /* Register variable[1]: Method return value and escape marker */
1622 variable[1] = TAG_Bool(true);
1623 goto return_label51;
1624 return_label51: while(false);
1625 tracehead = trace.prev;
1626 return variable[1];
1627 }
1628 val_t static_type___MMNullableType___as_nullable(val_t self) {
1629 struct trace_t trace = {NULL, NULL, 379, LOCATE_static_type___MMNullableType___as_nullable};
1630 val_t variable[2];
1631 struct WBT_ **closurevariable = NULL;
1632 trace.prev = tracehead; tracehead = &trace;
1633 trace.file = LOCATE_static_type;
1634 /* Register variable[0]: Local variable */
1635 variable[0] = self;
1636 /* Register variable[1]: Method return value and escape marker */
1637 variable[1] = variable[0];
1638 goto return_label52;
1639 return_label52: while(false);
1640 tracehead = trace.prev;
1641 return variable[1];
1642 }
1643 val_t static_type___MMNullableType___as_notnull(val_t self) {
1644 struct trace_t trace = {NULL, NULL, 378, LOCATE_static_type___MMNullableType___as_notnull};
1645 val_t variable[3];
1646 struct WBT_ **closurevariable = NULL;
1647 trace.prev = tracehead; tracehead = &trace;
1648 trace.file = LOCATE_static_type;
1649 /* Register variable[0]: Local variable */
1650 variable[0] = self;
1651 /* Register variable[1]: Method return value and escape marker */
1652 /* Register variable[2]: Result */
1653 variable[2] = ATTR_static_type___MMNullableType____base_type(variable[0]) /*MMNullableType::_base_type*/;
1654 variable[1] = variable[2];
1655 goto return_label53;
1656 return_label53: while(false);
1657 tracehead = trace.prev;
1658 return variable[1];
1659 }
1660 void static_type___MMNullableType___init(val_t self, val_t param0, int* init_table) {
1661 struct trace_t trace = {NULL, NULL, 380, LOCATE_static_type___MMNullableType___init};
1662 val_t variable[3];
1663 struct WBT_ **closurevariable = NULL;
1664 trace.prev = tracehead; tracehead = &trace;
1665 trace.file = LOCATE_static_type;
1666 /* Register variable[0]: Local variable */
1667 variable[0] = self;
1668 /* Register variable[1]: Local variable */
1669 variable[1] = param0;
1670 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMNullableType].i]) return;
1671 /* Register variable[2]: Method return value and escape marker */
1672 ATTR_static_type___MMNullableType____base_type(variable[0]) /*MMNullableType::_base_type*/ = variable[1] /*t*/;
1673 return_label54: while(false);
1674 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMNullableType].i] = 1;
1675 tracehead = trace.prev;
1676 return;
1677 }
1678 val_t static_type___MMTypeClass___to_s(val_t self) {
1679 struct trace_t trace = {NULL, NULL, 428, LOCATE_static_type___MMTypeClass___to_s};
1680 val_t variable[3];
1681 struct WBT_ **closurevariable = NULL;
1682 trace.prev = tracehead; tracehead = &trace;
1683 trace.file = LOCATE_static_type;
1684 /* Register variable[0]: Local variable */
1685 variable[0] = self;
1686 /* Register variable[1]: Method return value and escape marker */
1687 /* Register variable[2]: Result */
1688 variable[2] = ATTR_static_type___MMTypeClass____local_class(variable[0]) /*MMTypeClass::_local_class*/;
1689 /* Register variable[2]: Result */
1690 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*MMLocalClass::to_s*/;
1691 variable[1] = variable[2];
1692 goto return_label55;
1693 return_label55: while(false);
1694 tracehead = trace.prev;
1695 return variable[1];
1696 }
1697 val_t static_type___MMTypeClass___module(val_t self) {
1698 struct trace_t trace = {NULL, NULL, 425, LOCATE_static_type___MMTypeClass___module};
1699 val_t variable[3];
1700 struct WBT_ **closurevariable = NULL;
1701 trace.prev = tracehead; tracehead = &trace;
1702 trace.file = LOCATE_static_type;
1703 /* Register variable[0]: Local variable */
1704 variable[0] = self;
1705 /* Register variable[1]: Method return value and escape marker */
1706 /* Register variable[2]: Result */
1707 variable[2] = ATTR_static_type___MMTypeClass____local_class(variable[0]) /*MMTypeClass::_local_class*/;
1708 /* Register variable[2]: Result */
1709 variable[2] = CALL_abstractmetamodel___MMLocalClass___module(variable[2])(variable[2]) /*MMLocalClass::module*/;
1710 variable[1] = variable[2];
1711 goto return_label56;
1712 return_label56: while(false);
1713 tracehead = trace.prev;
1714 return variable[1];
1715 }
1716 val_t static_type___MMTypeClass___local_class(val_t self) {
1717 struct trace_t trace = {NULL, NULL, 424, LOCATE_static_type___MMTypeClass___local_class};
1718 val_t *variable = NULL;
1719 struct WBT_ **closurevariable = NULL;
1720 trace.prev = tracehead; tracehead = &trace;
1721 trace.file = LOCATE_static_type;
1722 tracehead = trace.prev;
1723 return ATTR_static_type___MMTypeClass____local_class( self) /*MMTypeClass::_local_class*/;
1724 }
1725 val_t static_type___MMTypeClass_____l(val_t self, val_t param0) {
1726 struct trace_t trace = {NULL, NULL, 426, LOCATE_static_type___MMTypeClass_____l};
1727 val_t variable[4];
1728 struct WBT_ **closurevariable = NULL;
1729 trace.prev = tracehead; tracehead = &trace;
1730 trace.file = LOCATE_static_type;
1731 /* Register variable[0]: Local variable */
1732 variable[0] = self;
1733 /* Register variable[1]: Local variable */
1734 variable[1] = param0;
1735 /* Register variable[2]: Method return value and escape marker */
1736 /* Register variable[3]: Result */
1737 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*t*/ == NIT_NULL /*null*/) || (( variable[1] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*t*/)( variable[1] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1738 /* Ensure var variable[3]: Left 'and' operand*/
1739 if (UNTAG_Bool(variable[3])) { /* and */
1740 /* Register variable[3]: Result */
1741 variable[3] = CALL_static_type___MMType___is_supertype( variable[1] /*t*/)( variable[1] /*t*/, variable[0]) /*MMType::is_supertype*/;
1742 }
1743 /* Register variable[3]: Result */
1744 variable[2] = variable[3];
1745 goto return_label57;
1746 return_label57: while(false);
1747 tracehead = trace.prev;
1748 return variable[2];
1749 }
1750 val_t static_type___MMTypeClass___upcast_for(val_t self, val_t param0) {
1751 struct trace_t trace = {NULL, NULL, 433, LOCATE_static_type___MMTypeClass___upcast_for};
1752 val_t variable[5];
1753 struct WBT_ **closurevariable = NULL;
1754 trace.prev = tracehead; tracehead = &trace;
1755 trace.file = LOCATE_static_type;
1756 /* Register variable[0]: Local variable */
1757 variable[0] = self;
1758 /* Register variable[1]: Local variable */
1759 variable[1] = param0;
1760 /* Register variable[2]: Method return value and escape marker */
1761 /* Register variable[3]: Result */
1762 variable[3] = ATTR_static_type___MMTypeClass____local_class(variable[0]) /*MMTypeClass::_local_class*/;
1763 /* Register variable[3]: Result */
1764 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
1765 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMTypeClass___upcast_for, LOCATE_static_type, 435); nit_exit(1);}
1766 /* Register variable[3]: Result */
1767 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*c*/ == NIT_NULL /*null*/) || (( variable[1] /*c*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*c*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*c*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*c*/)( variable[1] /*c*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1768 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMTypeClass___upcast_for, LOCATE_static_type, 436); nit_exit(1);}
1769 /* Register variable[3]: Local variable */
1770 variable[3] = variable[0];
1771 /* Register variable[4]: Result */
1772 variable[4] = ATTR_static_type___MMTypeClass____local_class(variable[0]) /*MMTypeClass::_local_class*/;
1773 /* Register variable[4]: Result */
1774 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[4] == variable[1] /*c*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*c*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4], variable[1] /*c*/) /*Object::==*/)))))));
1775 if (UNTAG_Bool(variable[4])) { /*if*/
1776 /* Register variable[4]: Result */
1777 variable[4] = ATTR_static_type___MMTypeClass____local_class(variable[0]) /*MMTypeClass::_local_class*/;
1778 /* Register variable[4]: Result */
1779 variable[4] = CALL_static_type___MMLocalClass___ancestor(variable[4])(variable[4], variable[1] /*c*/) /*MMLocalClass::ancestor*/;
1780 variable[3] = variable[4] /*t=*/;
1781 }
1782 /* Register variable[4]: Result */
1783 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*t*/ == NIT_NULL /*null*/) || (( variable[3] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*t*/)( variable[3] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1784 if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMTypeClass___upcast_for, LOCATE_static_type, 442); nit_exit(1);}
1785 variable[2] = variable[3] /*t*/;
1786 goto return_label58;
1787 return_label58: while(false);
1788 tracehead = trace.prev;
1789 return variable[2];
1790 }
1791 void static_type___MMTypeClass___init(val_t self, val_t param0, int* init_table) {
1792 struct trace_t trace = {NULL, NULL, 446, LOCATE_static_type___MMTypeClass___init};
1793 val_t variable[3];
1794 struct WBT_ **closurevariable = NULL;
1795 trace.prev = tracehead; tracehead = &trace;
1796 trace.file = LOCATE_static_type;
1797 /* Register variable[0]: Local variable */
1798 variable[0] = self;
1799 /* Register variable[1]: Local variable */
1800 variable[1] = param0;
1801 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMTypeClass].i]) return;
1802 /* Register variable[2]: Method return value and escape marker */
1803 ATTR_static_type___MMTypeClass____local_class(variable[0]) /*MMTypeClass::_local_class*/ = variable[1] /*c*/;
1804 return_label59: while(false);
1805 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMTypeClass].i] = 1;
1806 tracehead = trace.prev;
1807 return;
1808 }
1809 val_t static_type___MMTypeSimpleClass___is_supertype(val_t self, val_t param0) {
1810 struct trace_t trace = {NULL, NULL, 454, LOCATE_static_type___MMTypeSimpleClass___is_supertype};
1811 val_t variable[5];
1812 struct WBT_ **closurevariable = NULL;
1813 trace.prev = tracehead; tracehead = &trace;
1814 trace.file = LOCATE_static_type;
1815 /* Register variable[0]: Local variable */
1816 variable[0] = self;
1817 /* Register variable[1]: Local variable */
1818 variable[1] = param0;
1819 /* Register variable[2]: Method return value and escape marker */
1820 /* Register variable[3]: Result */
1821 variable[3] = CALL_static_type___MMType___local_class( variable[1] /*t*/)( variable[1] /*t*/) /*MMType::local_class*/;
1822 /* Register variable[3]: Result */
1823 variable[3] = CALL_abstractmetamodel___MMLocalClass___cshe(variable[3])(variable[3]) /*MMLocalClass::cshe*/;
1824 /* Register variable[4]: Result */
1825 variable[4] = ATTR_static_type___MMTypeClass____local_class(variable[0]) /*MMTypeClass::_local_class*/;
1826 /* Register variable[3]: Result */
1827 variable[3] = CALL_partial_order___PartialOrderElement_____leq(variable[3])(variable[3], variable[4]) /*PartialOrderElement::<=*/;
1828 variable[2] = variable[3];
1829 goto return_label60;
1830 return_label60: while(false);
1831 tracehead = trace.prev;
1832 return variable[2];
1833 }
1834 val_t static_type___MMTypeSimpleClass___for_module(val_t self, val_t param0) {
1835 struct trace_t trace = {NULL, NULL, 459, LOCATE_static_type___MMTypeSimpleClass___for_module};
1836 val_t variable[5];
1837 struct WBT_ **closurevariable = NULL;
1838 trace.prev = tracehead; tracehead = &trace;
1839 trace.file = LOCATE_static_type;
1840 /* Register variable[0]: Local variable */
1841 variable[0] = self;
1842 /* Register variable[1]: Local variable */
1843 variable[1] = param0;
1844 /* Register variable[2]: Method return value and escape marker */
1845 /* Register variable[3]: Local variable */
1846 variable[3] = variable[0];
1847 /* Register variable[4]: Result */
1848 variable[4] = CALL_static_type___MMType___module(variable[0])(variable[0]) /*MMTypeClass::module*/;
1849 /* Register variable[4]: Result */
1850 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[4] == variable[1] /*mod*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*mod*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4], variable[1] /*mod*/) /*Object::==*/)))))));
1851 if (UNTAG_Bool(variable[4])) { /*if*/
1852 /* Register variable[4]: Result */
1853 variable[4] = ATTR_static_type___MMTypeClass____local_class(variable[0]) /*MMTypeClass::_local_class*/;
1854 /* Register variable[4]: Result */
1855 variable[4] = CALL_abstractmetamodel___MMLocalClass___for_module(variable[4])(variable[4], variable[1] /*mod*/) /*MMLocalClass::for_module*/;
1856 /* Register variable[4]: Result */
1857 variable[4] = CALL_static_type___MMLocalClass___get_type(variable[4])(variable[4]) /*MMLocalClass::get_type*/;
1858 variable[3] = variable[4] /*t=*/;
1859 }
1860 /* Register variable[4]: Result */
1861 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*t*/ == NIT_NULL /*null*/) || (( variable[3] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*t*/)( variable[3] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1862 if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMTypeSimpleClass___for_module, LOCATE_static_type, 465); nit_exit(1);}
1863 variable[2] = variable[3] /*t*/;
1864 goto return_label61;
1865 return_label61: while(false);
1866 tracehead = trace.prev;
1867 return variable[2];
1868 }
1869 val_t static_type___MMTypeSimpleClass___adapt_to(val_t self, val_t param0) {
1870 struct trace_t trace = {NULL, NULL, 469, LOCATE_static_type___MMTypeSimpleClass___adapt_to};
1871 val_t variable[3];
1872 struct WBT_ **closurevariable = NULL;
1873 trace.prev = tracehead; tracehead = &trace;
1874 trace.file = LOCATE_static_type;
1875 /* Register variable[0]: Local variable */
1876 variable[0] = self;
1877 /* Register variable[1]: Local variable */
1878 variable[1] = param0;
1879 /* Register variable[2]: Method return value and escape marker */
1880 variable[2] = variable[0];
1881 goto return_label62;
1882 return_label62: while(false);
1883 tracehead = trace.prev;
1884 return variable[2];
1885 }
1886 void static_type___MMTypeSimpleClass___init(val_t self, val_t param0, int* init_table) {
1887 struct trace_t trace = {NULL, NULL, 471, LOCATE_static_type___MMTypeSimpleClass___init};
1888 val_t variable[3];
1889 struct WBT_ **closurevariable = NULL;
1890 trace.prev = tracehead; tracehead = &trace;
1891 trace.file = LOCATE_static_type;
1892 /* Register variable[0]: Local variable */
1893 variable[0] = self;
1894 /* Register variable[1]: Local variable */
1895 variable[1] = param0;
1896 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMTypeSimpleClass].i]) return;
1897 /* Register variable[2]: Method return value and escape marker */
1898 CALL_static_type___MMTypeClass___init(variable[0])(variable[0], variable[1] /*c*/, init_table /*YYY*/) /*MMTypeClass::init*/;
1899 return_label63: while(false);
1900 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMTypeSimpleClass].i] = 1;
1901 tracehead = trace.prev;
1902 return;
1903 }
1904 val_t static_type___MMTypeNone___to_s(val_t self) {
1905 struct trace_t trace = {NULL, NULL, 483, LOCATE_static_type___MMTypeNone___to_s};
1906 static val_t once_value_65 = NIT_NULL; /* Once value for string variable[2]*/
1907 val_t variable[3];
1908 struct WBT_ **closurevariable = NULL;
1909 trace.prev = tracehead; tracehead = &trace;
1910 trace.file = LOCATE_static_type;
1911 /* Register variable[0]: Local variable */
1912 variable[0] = self;
1913 /* Register variable[1]: Method return value and escape marker */
1914 /* Register variable[2]: Once String constant */
1915 if (once_value_65 != NIT_NULL) variable[2] = once_value_65;
1916 else {
1917 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("null"), TAG_Int(4)) /*new String*/;
1918 once_value_65 = variable[2];
1919 }
1920 /* Register variable[2]: Result */
1921 variable[1] = variable[2];
1922 goto return_label64;
1923 return_label64: while(false);
1924 tracehead = trace.prev;
1925 return variable[1];
1926 }
1927 val_t static_type___MMTypeNone___module(val_t self) {
1928 struct trace_t trace = {NULL, NULL, 480, LOCATE_static_type___MMTypeNone___module};
1929 val_t *variable = NULL;
1930 struct WBT_ **closurevariable = NULL;
1931 trace.prev = tracehead; tracehead = &trace;
1932 trace.file = LOCATE_static_type;
1933 tracehead = trace.prev;
1934 return ATTR_static_type___MMTypeNone____module( self) /*MMTypeNone::_module*/;
1935 }
1936 val_t static_type___MMTypeNone___local_class(val_t self) {
1937 struct trace_t trace = {NULL, NULL, 485, LOCATE_static_type___MMTypeNone___local_class};
1938 val_t variable[2];
1939 struct WBT_ **closurevariable = NULL;
1940 trace.prev = tracehead; tracehead = &trace;
1941 trace.file = LOCATE_static_type;
1942 /* Register variable[0]: Local variable */
1943 variable[0] = self;
1944 /* Register variable[1]: Method return value and escape marker */
1945 fprintf(stderr, "Aborted"); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMTypeNone___local_class, LOCATE_static_type, 485); nit_exit(1);
1946 return_label66: while(false);
1947 tracehead = trace.prev;
1948 return variable[1];
1949 }
1950 val_t static_type___MMTypeNone_____l(val_t self, val_t param0) {
1951 struct trace_t trace = {NULL, NULL, 482, LOCATE_static_type___MMTypeNone_____l};
1952 val_t variable[4];
1953 struct WBT_ **closurevariable = NULL;
1954 trace.prev = tracehead; tracehead = &trace;
1955 trace.file = LOCATE_static_type;
1956 /* Register variable[0]: Local variable */
1957 variable[0] = self;
1958 /* Register variable[1]: Local variable */
1959 variable[1] = param0;
1960 /* Register variable[2]: Method return value and escape marker */
1961 /* Register variable[3]: Result */
1962 variable[3] = TAG_Bool(( variable[1] /*t*/==NIT_NULL) || VAL_ISA( variable[1] /*t*/, COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
1963 /* Ensure var variable[3]: Left 'or' operand*/
1964 if (!UNTAG_Bool(variable[3])) { /* or */
1965 /* Register variable[3]: Result */
1966 variable[3] = TAG_Bool(( variable[1] /*t*/==NIT_NULL) || VAL_ISA( variable[1] /*t*/, COLOR_MMNullableType, ID_MMNullableType)) /*cast MMNullableType*/;
1967 }
1968 /* Register variable[3]: Result */
1969 variable[2] = variable[3];
1970 goto return_label67;
1971 return_label67: while(false);
1972 tracehead = trace.prev;
1973 return variable[2];
1974 }
1975 val_t static_type___MMTypeNone___is_supertype(val_t self, val_t param0) {
1976 struct trace_t trace = {NULL, NULL, 484, LOCATE_static_type___MMTypeNone___is_supertype};
1977 val_t variable[3];
1978 struct WBT_ **closurevariable = NULL;
1979 trace.prev = tracehead; tracehead = &trace;
1980 trace.file = LOCATE_static_type;
1981 /* Register variable[0]: Local variable */
1982 variable[0] = self;
1983 /* Register variable[1]: Local variable */
1984 variable[1] = param0;
1985 /* Register variable[2]: Method return value and escape marker */
1986 variable[2] = TAG_Bool(false);
1987 goto return_label68;
1988 return_label68: while(false);
1989 tracehead = trace.prev;
1990 return variable[2];
1991 }
1992 val_t static_type___MMTypeNone___upcast_for(val_t self, val_t param0) {
1993 struct trace_t trace = {NULL, NULL, 486, LOCATE_static_type___MMTypeNone___upcast_for};
1994 val_t variable[3];
1995 struct WBT_ **closurevariable = NULL;
1996 trace.prev = tracehead; tracehead = &trace;
1997 trace.file = LOCATE_static_type;
1998 /* Register variable[0]: Local variable */
1999 variable[0] = self;
2000 /* Register variable[1]: Local variable */
2001 variable[1] = param0;
2002 /* Register variable[2]: Method return value and escape marker */
2003 fprintf(stderr, "Aborted"); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMTypeNone___upcast_for, LOCATE_static_type, 486); nit_exit(1);
2004 return_label69: while(false);
2005 tracehead = trace.prev;
2006 return variable[2];
2007 }
2008 val_t static_type___MMTypeNone___is_nullable(val_t self) {
2009 struct trace_t trace = {NULL, NULL, 481, LOCATE_static_type___MMTypeNone___is_nullable};
2010 val_t variable[2];
2011 struct WBT_ **closurevariable = NULL;
2012 trace.prev = tracehead; tracehead = &trace;
2013 trace.file = LOCATE_static_type;
2014 /* Register variable[0]: Local variable */
2015 variable[0] = self;
2016 /* Register variable[1]: Method return value and escape marker */
2017 variable[1] = TAG_Bool(true);
2018 goto return_label70;
2019 return_label70: while(false);
2020 tracehead = trace.prev;
2021 return variable[1];
2022 }
2023 val_t static_type___MMTypeNone___as_nullable(val_t self) {
2024 struct trace_t trace = {NULL, NULL, 487, LOCATE_static_type___MMTypeNone___as_nullable};
2025 val_t variable[2];
2026 struct WBT_ **closurevariable = NULL;
2027 trace.prev = tracehead; tracehead = &trace;
2028 trace.file = LOCATE_static_type;
2029 /* Register variable[0]: Local variable */
2030 variable[0] = self;
2031 /* Register variable[1]: Method return value and escape marker */
2032 variable[1] = variable[0];
2033 goto return_label71;
2034 return_label71: while(false);
2035 tracehead = trace.prev;
2036 return variable[1];
2037 }
2038 val_t static_type___MMTypeNone___as_notnull(val_t self) {
2039 struct trace_t trace = {NULL, NULL, 488, LOCATE_static_type___MMTypeNone___as_notnull};
2040 val_t variable[2];
2041 struct WBT_ **closurevariable = NULL;
2042 trace.prev = tracehead; tracehead = &trace;
2043 trace.file = LOCATE_static_type;
2044 /* Register variable[0]: Local variable */
2045 variable[0] = self;
2046 /* Register variable[1]: Method return value and escape marker */
2047 fprintf(stderr, "Aborted"); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_static_type___MMTypeNone___as_notnull, LOCATE_static_type, 488); nit_exit(1);
2048 return_label72: while(false);
2049 tracehead = trace.prev;
2050 return variable[1];
2051 }
2052 void static_type___MMTypeNone___init(val_t self, val_t param0, int* init_table) {
2053 struct trace_t trace = {NULL, NULL, 490, LOCATE_static_type___MMTypeNone___init};
2054 val_t variable[3];
2055 struct WBT_ **closurevariable = NULL;
2056 trace.prev = tracehead; tracehead = &trace;
2057 trace.file = LOCATE_static_type;
2058 /* Register variable[0]: Local variable */
2059 variable[0] = self;
2060 /* Register variable[1]: Local variable */
2061 variable[1] = param0;
2062 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMTypeNone].i]) return;
2063 /* Register variable[2]: Method return value and escape marker */
2064 ATTR_static_type___MMTypeNone____module(variable[0]) /*MMTypeNone::_module*/ = variable[1] /*m*/;
2065 return_label73: while(false);
2066 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMTypeNone].i] = 1;
2067 tracehead = trace.prev;
2068 return;
2069 }
2070 val_t static_type___MMModule___type_none(val_t self) {
2071 struct trace_t trace = {NULL, NULL, 494, LOCATE_static_type___MMModule___type_none};
2072 val_t *variable = NULL;
2073 struct WBT_ **closurevariable = NULL;
2074 trace.prev = tracehead; tracehead = &trace;
2075 trace.file = LOCATE_static_type;
2076 tracehead = trace.prev;
2077 return ATTR_static_type___MMModule____type_none( self) /*MMModule::_type_none*/;
2078 }