misc: update Changelog and NOTICE; remove BUGS and TODO
[nit.git] / c_src / abstractmetamodel._sep.c
1 /* This C file is generated by NIT to compile module abstractmetamodel. */
2 #include "abstractmetamodel._sep.h"
3 void abstractmetamodel___MMContext___init(val_t self, int* init_table) {
4 struct trace_t trace = {NULL, NULL, 26, LOCATE_abstractmetamodel___MMContext___init};
5 val_t variable[2];
6 struct WBT_ **closurevariable = NULL;
7 trace.prev = tracehead; tracehead = &trace;
8 trace.file = LOCATE_abstractmetamodel;
9 /* Register variable[0]: Local variable */
10 variable[0] = self;
11 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMContext].i]) return;
12 /* Register variable[1]: Method return value and escape marker */
13 return_label0: while(false);
14 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMContext].i] = 1;
15 tracehead = trace.prev;
16 return;
17 }
18 val_t abstractmetamodel___MMContext___module_hierarchy(val_t self) {
19 struct trace_t trace = {NULL, NULL, 28, LOCATE_abstractmetamodel___MMContext___module_hierarchy};
20 val_t *variable = NULL;
21 struct WBT_ **closurevariable = NULL;
22 trace.prev = tracehead; tracehead = &trace;
23 trace.file = LOCATE_abstractmetamodel;
24 tracehead = trace.prev;
25 return ATTR_abstractmetamodel___MMContext____module_hierarchy( self) /*MMContext::_module_hierarchy*/;
26 }
27 val_t abstractmetamodel___MMContext___class_hierarchy(val_t self) {
28 struct trace_t trace = {NULL, NULL, 31, LOCATE_abstractmetamodel___MMContext___class_hierarchy};
29 val_t *variable = NULL;
30 struct WBT_ **closurevariable = NULL;
31 trace.prev = tracehead; tracehead = &trace;
32 trace.file = LOCATE_abstractmetamodel;
33 tracehead = trace.prev;
34 return ATTR_abstractmetamodel___MMContext____class_hierarchy( self) /*MMContext::_class_hierarchy*/;
35 }
36 val_t abstractmetamodel___MMContext___modules(val_t self) {
37 struct trace_t trace = {NULL, NULL, 38, LOCATE_abstractmetamodel___MMContext___modules};
38 val_t *variable = NULL;
39 struct WBT_ **closurevariable = NULL;
40 trace.prev = tracehead; tracehead = &trace;
41 trace.file = LOCATE_abstractmetamodel;
42 tracehead = trace.prev;
43 return ATTR_abstractmetamodel___MMContext____modules( self) /*MMContext::_modules*/;
44 }
45 void abstractmetamodel___MMContext___add_module(val_t self, val_t param0, val_t param1) {
46 struct trace_t trace = {NULL, NULL, 41, LOCATE_abstractmetamodel___MMContext___add_module};
47 val_t variable[6];
48 struct WBT_ **closurevariable = NULL;
49 trace.prev = tracehead; tracehead = &trace;
50 trace.file = LOCATE_abstractmetamodel;
51 /* Register variable[0]: Local variable */
52 variable[0] = self;
53 /* Register variable[1]: Local variable */
54 variable[1] = param0;
55 /* Register variable[2]: Local variable */
56 variable[2] = param1;
57 /* Register variable[3]: Method return value and escape marker */
58 /* Register variable[4]: Result */
59 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*supers*/ == NIT_NULL /*null*/) || (( variable[2] /*supers*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*supers*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*supers*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*supers*/)( variable[2] /*supers*/, NIT_NULL /*null*/) /*Object::==*/)))))));
60 if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMContext___add_module, LOCATE_abstractmetamodel, 44); nit_exit(1);}
61 /* Register variable[4]: Result */
62 variable[4] = ATTR_abstractmetamodel___MMContext____module_hierarchy(variable[0]) /*MMContext::_module_hierarchy*/;
63 /* Register variable[5]: Result */
64 variable[5] = ATTR_abstractmetamodel___MMContext____module_hierarchy(variable[0]) /*MMContext::_module_hierarchy*/;
65 /* Register variable[5]: Result */
66 variable[5] = CALL_partial_order___PartialOrder___select_smallests(variable[5])(variable[5], variable[2] /*supers*/) /*PartialOrder::select_smallests*/;
67 CALL_partial_order___PartialOrder___add(variable[4])(variable[4], variable[1] /*module*/, variable[5]) /*PartialOrder::add*/;
68 /* Register variable[4]: Result */
69 variable[4] = CALL_abstractmetamodel___MMModule___name( variable[1] /*module*/)( variable[1] /*module*/) /*MMModule::name*/;
70 /* Register variable[4]: Result */
71 variable[4] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
72 if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMContext___add_module, LOCATE_abstractmetamodel, 46); nit_exit(1);}
73 /* Register variable[4]: Result */
74 variable[4] = ATTR_abstractmetamodel___MMContext____modules(variable[0]) /*MMContext::_modules*/;
75 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[1] /*module*/) /*AbstractArray::add*/;
76 /* Register variable[4]: Result */
77 variable[4] = ATTR_abstractmetamodel___MMContext____module_hierarchy(variable[0]) /*MMContext::_module_hierarchy*/;
78 /* Register variable[4]: Result */
79 variable[4] = CALL_partial_order___PartialOrder_____bra(variable[4])(variable[4], variable[1] /*module*/) /*PartialOrder::[]*/;
80 ATTR_abstractmetamodel___MMModule____mhe( variable[1] /*module*/) /*MMModule::_mhe*/ = variable[4];
81 return_label1: while(false);
82 tracehead = trace.prev;
83 return;
84 }
85 void abstractmetamodel___MMContext___add_global_class(val_t self, val_t param0) {
86 struct trace_t trace = {NULL, NULL, 51, LOCATE_abstractmetamodel___MMContext___add_global_class};
87 val_t variable[4];
88 struct WBT_ **closurevariable = NULL;
89 trace.prev = tracehead; tracehead = &trace;
90 trace.file = LOCATE_abstractmetamodel;
91 /* Register variable[0]: Local variable */
92 variable[0] = self;
93 /* Register variable[1]: Local variable */
94 variable[1] = param0;
95 /* Register variable[2]: Method return value and escape marker */
96 /* Register variable[3]: Result */
97 variable[3] = ATTR_abstractmetamodel___MMContext____global_classes(variable[0]) /*MMContext::_global_classes*/;
98 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[1] /*c*/) /*AbstractArray::add*/;
99 return_label2: while(false);
100 tracehead = trace.prev;
101 return;
102 }
103 void abstractmetamodel___MMContext___add_local_class(val_t self, val_t param0, val_t param1) {
104 struct trace_t trace = {NULL, NULL, 54, LOCATE_abstractmetamodel___MMContext___add_local_class};
105 val_t variable[13];
106 struct WBT_ **closurevariable = NULL;
107 trace.prev = tracehead; tracehead = &trace;
108 trace.file = LOCATE_abstractmetamodel;
109 /* Register variable[0]: Local variable */
110 variable[0] = self;
111 /* Register variable[1]: Local variable */
112 variable[1] = param0;
113 /* Register variable[2]: Local variable */
114 variable[2] = param1;
115 /* Register variable[3]: Method return value and escape marker */
116 /* Register variable[4]: Result */
117 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*sup*/ == NIT_NULL /*null*/) || (( variable[2] /*sup*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*sup*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*sup*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*sup*/)( variable[2] /*sup*/, NIT_NULL /*null*/) /*Object::==*/)))))));
118 if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMContext___add_local_class, LOCATE_abstractmetamodel, 57); nit_exit(1);}
119 /* Register variable[4]: Local variable */
120 /* Register variable[5]: Result */
121 variable[5] = NEW_Array_array___Array___init() /*new Array[MMLocalClass]*/;
122 variable[4] = variable[5];
123 /* Register variable[5]: Local variable */
124 /* Register variable[6]: Result */
125 variable[6] = NEW_Array_array___Array___init() /*new Array[String]*/;
126 variable[5] = variable[6];
127 /* Register variable[6]: For iterator */
128 variable[6] = CALL_abstract_collection___Collection___iterator( variable[2] /*sup*/)( variable[2] /*sup*/) /*AbstractArrayRead::iterator*/;
129 while (true) { /*for*/
130 /* Register variable[7]: For 'is_ok' result */
131 variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/;
132 if (!UNTAG_Bool(variable[7])) break; /*for*/
133 variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
134 /* Register variable[8]: Local variable */
135 variable[8] = variable[7];
136 /* Register variable[9]: Result */
137 variable[9] = TAG_Bool(( variable[8] /*s*/==NIT_NULL) || VAL_ISA( variable[8] /*s*/, COLOR_MMConcreteClass, ID_MMConcreteClass)) /*cast MMConcreteClass*/;
138 if (UNTAG_Bool(variable[9])) { /*if*/
139 CALL_abstract_collection___SimpleCollection___add( variable[4] /*csup*/)( variable[4] /*csup*/, variable[8] /*s*/) /*AbstractArray::add*/;
140 } else { /*if*/
141 /* Register variable[9]: Result */
142 variable[9] = CALL_abstractmetamodel___MMLocalClass___che( variable[8] /*s*/)( variable[8] /*s*/) /*MMLocalClass::che*/;
143 /* Register variable[9]: Result */
144 variable[9] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[9])(variable[9]) /*PartialOrderElement::direct_greaters*/;
145 /* Register variable[9]: For iterator */
146 variable[9] = CALL_abstract_collection___Collection___iterator(variable[9])(variable[9]) /*AbstractArrayRead::iterator*/;
147 while (true) { /*for*/
148 /* Register variable[10]: For 'is_ok' result */
149 variable[10] = CALL_abstract_collection___Iterator___is_ok(variable[9])(variable[9]) /*ArrayIterator::is_ok*/;
150 if (!UNTAG_Bool(variable[10])) break; /*for*/
151 variable[10] = CALL_abstract_collection___Iterator___item(variable[9])(variable[9]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
152 /* Register variable[11]: Local variable */
153 variable[11] = variable[10];
154 /* Register variable[12]: Result */
155 variable[12] = CALL_abstract_collection___Collection___has( variable[4] /*csup*/)( variable[4] /*csup*/, variable[11] /*ss*/) /*AbstractArrayRead::has*/;
156 if (UNTAG_Bool(variable[12])) { /*if*/
157 goto continue_5;
158 }
159 CALL_abstract_collection___SimpleCollection___add( variable[4] /*csup*/)( variable[4] /*csup*/, variable[11] /*ss*/) /*AbstractArray::add*/;
160 continue_5: while(0);
161 CALL_abstract_collection___Iterator___next(variable[9])(variable[9]) /*ArrayIterator::next*/;
162 }
163 break_5: while(0);
164 }
165 continue_4: while(0);
166 CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/;
167 }
168 break_4: while(0);
169 /* Register variable[6]: Local variable */
170 /* Register variable[7]: Result */
171 variable[7] = ATTR_abstractmetamodel___MMContext____class_hierarchy(variable[0]) /*MMContext::_class_hierarchy*/;
172 /* Register variable[7]: Result */
173 variable[7] = CALL_partial_order___PartialOrder___add(variable[7])(variable[7], variable[1] /*c*/, variable[4] /*csup*/) /*PartialOrder::add*/;
174 variable[6] = variable[7];
175 ATTR_abstractmetamodel___MMLocalClass____che( variable[1] /*c*/) /*MMLocalClass::_che*/ = variable[6] /*che*/;
176 return_label3: while(false);
177 tracehead = trace.prev;
178 return;
179 }
180 val_t abstractmetamodel___MMDirectory___name(val_t self) {
181 struct trace_t trace = {NULL, NULL, 77, LOCATE_abstractmetamodel___MMDirectory___name};
182 val_t *variable = NULL;
183 struct WBT_ **closurevariable = NULL;
184 trace.prev = tracehead; tracehead = &trace;
185 trace.file = LOCATE_abstractmetamodel;
186 tracehead = trace.prev;
187 return ATTR_abstractmetamodel___MMDirectory____name( self) /*MMDirectory::_name*/;
188 }
189 val_t abstractmetamodel___MMDirectory___path(val_t self) {
190 struct trace_t trace = {NULL, NULL, 80, LOCATE_abstractmetamodel___MMDirectory___path};
191 val_t *variable = NULL;
192 struct WBT_ **closurevariable = NULL;
193 trace.prev = tracehead; tracehead = &trace;
194 trace.file = LOCATE_abstractmetamodel;
195 tracehead = trace.prev;
196 return ATTR_abstractmetamodel___MMDirectory____path( self) /*MMDirectory::_path*/;
197 }
198 val_t abstractmetamodel___MMDirectory___parent(val_t self) {
199 struct trace_t trace = {NULL, NULL, 83, LOCATE_abstractmetamodel___MMDirectory___parent};
200 val_t *variable = NULL;
201 struct WBT_ **closurevariable = NULL;
202 trace.prev = tracehead; tracehead = &trace;
203 trace.file = LOCATE_abstractmetamodel;
204 tracehead = trace.prev;
205 return ATTR_abstractmetamodel___MMDirectory____parent( self) /*MMDirectory::_parent*/;
206 }
207 val_t abstractmetamodel___MMDirectory___owner(val_t self) {
208 struct trace_t trace = {NULL, NULL, 87, LOCATE_abstractmetamodel___MMDirectory___owner};
209 val_t *variable = NULL;
210 struct WBT_ **closurevariable = NULL;
211 trace.prev = tracehead; tracehead = &trace;
212 trace.file = LOCATE_abstractmetamodel;
213 tracehead = trace.prev;
214 return ATTR_abstractmetamodel___MMDirectory____owner( self) /*MMDirectory::_owner*/;
215 }
216 void abstractmetamodel___MMDirectory___owner__eq(val_t self, val_t param0) {
217 struct trace_t trace = {NULL, NULL, 87, LOCATE_abstractmetamodel___MMDirectory___owner__eq};
218 val_t *variable = NULL;
219 struct WBT_ **closurevariable = NULL;
220 trace.prev = tracehead; tracehead = &trace;
221 trace.file = LOCATE_abstractmetamodel;
222 ATTR_abstractmetamodel___MMDirectory____owner( self) /*MMDirectory::_owner*/ = param0;
223 tracehead = trace.prev;
224 return;
225 }
226 val_t abstractmetamodel___MMDirectory___modules(val_t self) {
227 struct trace_t trace = {NULL, NULL, 90, LOCATE_abstractmetamodel___MMDirectory___modules};
228 val_t *variable = NULL;
229 struct WBT_ **closurevariable = NULL;
230 trace.prev = tracehead; tracehead = &trace;
231 trace.file = LOCATE_abstractmetamodel;
232 tracehead = trace.prev;
233 return ATTR_abstractmetamodel___MMDirectory____modules( self) /*MMDirectory::_modules*/;
234 }
235 void abstractmetamodel___MMDirectory___add_module(val_t self, val_t param0) {
236 struct trace_t trace = {NULL, NULL, 93, LOCATE_abstractmetamodel___MMDirectory___add_module};
237 val_t variable[5];
238 struct WBT_ **closurevariable = NULL;
239 trace.prev = tracehead; tracehead = &trace;
240 trace.file = LOCATE_abstractmetamodel;
241 /* Register variable[0]: Local variable */
242 variable[0] = self;
243 /* Register variable[1]: Local variable */
244 variable[1] = param0;
245 /* Register variable[2]: Method return value and escape marker */
246 /* Register variable[3]: Result */
247 variable[3] = ATTR_abstractmetamodel___MMDirectory____modules(variable[0]) /*MMDirectory::_modules*/;
248 /* Register variable[4]: Result */
249 variable[4] = CALL_abstractmetamodel___MMModule___name( variable[1] /*module*/)( variable[1] /*module*/) /*MMModule::name*/;
250 /* Register variable[3]: Result */
251 variable[3] = CALL_abstract_collection___MapRead___has_key(variable[3])(variable[3], variable[4]) /*MapRead::has_key*/;
252 if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMDirectory___add_module, LOCATE_abstractmetamodel, 96); nit_exit(1);}
253 /* Register variable[3]: Result */
254 variable[3] = ATTR_abstractmetamodel___MMDirectory____modules(variable[0]) /*MMDirectory::_modules*/;
255 /* Register variable[4]: Result */
256 variable[4] = CALL_abstractmetamodel___MMModule___name( variable[1] /*module*/)( variable[1] /*module*/) /*MMModule::name*/;
257 CALL_abstract_collection___Map_____braeq(variable[3])(variable[3], variable[4], variable[1] /*module*/) /*Map::[]=*/;
258 return_label6: while(false);
259 tracehead = trace.prev;
260 return;
261 }
262 val_t abstractmetamodel___MMDirectory___dhe(val_t self) {
263 struct trace_t trace = {NULL, NULL, 100, LOCATE_abstractmetamodel___MMDirectory___dhe};
264 val_t *variable = NULL;
265 struct WBT_ **closurevariable = NULL;
266 trace.prev = tracehead; tracehead = &trace;
267 trace.file = LOCATE_abstractmetamodel;
268 tracehead = trace.prev;
269 return ATTR_abstractmetamodel___MMDirectory____dhe( self) /*MMDirectory::_dhe*/;
270 }
271 void abstractmetamodel___MMDirectory___init(val_t self, val_t param0, val_t param1, val_t param2, int* init_table) {
272 struct trace_t trace = {NULL, NULL, 103, LOCATE_abstractmetamodel___MMDirectory___init};
273 val_t variable[5];
274 struct WBT_ **closurevariable = NULL;
275 trace.prev = tracehead; tracehead = &trace;
276 trace.file = LOCATE_abstractmetamodel;
277 /* Register variable[0]: Local variable */
278 variable[0] = self;
279 /* Register variable[1]: Local variable */
280 variable[1] = param0;
281 /* Register variable[2]: Local variable */
282 variable[2] = param1;
283 /* Register variable[3]: Local variable */
284 variable[3] = param2;
285 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMDirectory].i]) return;
286 /* Register variable[4]: Method return value and escape marker */
287 ATTR_abstractmetamodel___MMDirectory____name(variable[0]) /*MMDirectory::_name*/ = variable[1] /*name*/;
288 ATTR_abstractmetamodel___MMDirectory____path(variable[0]) /*MMDirectory::_path*/ = variable[2] /*path*/;
289 ATTR_abstractmetamodel___MMDirectory____parent(variable[0]) /*MMDirectory::_parent*/ = variable[3] /*parent*/;
290 return_label7: while(false);
291 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMDirectory].i] = 1;
292 tracehead = trace.prev;
293 return;
294 }
295 val_t abstractmetamodel___MMDirectory___full_name_for(val_t self, val_t param0) {
296 struct trace_t trace = {NULL, NULL, 109, LOCATE_abstractmetamodel___MMDirectory___full_name_for};
297 static val_t once_value_9 = NIT_NULL; /* Once value for string variable[4]*/
298 static val_t once_value_10 = NIT_NULL; /* Once value for string variable[4]*/
299 static val_t once_value_11 = NIT_NULL; /* Once value for string variable[4]*/
300 val_t variable[5];
301 struct WBT_ **closurevariable = NULL;
302 trace.prev = tracehead; tracehead = &trace;
303 trace.file = LOCATE_abstractmetamodel;
304 /* Register variable[0]: Local variable */
305 variable[0] = self;
306 /* Register variable[1]: Local variable */
307 variable[1] = param0;
308 /* Register variable[2]: Method return value and escape marker */
309 variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
310 /* Register variable[4]: Once String constant */
311 if (once_value_9 != NIT_NULL) variable[4] = once_value_9;
312 else {
313 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
314 once_value_9 = variable[4];
315 }
316 /* Register variable[4]: Result */
317 /* Ensure var variable[4]: super-string element*/
318 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
319 /* Register variable[4]: Result */
320 variable[4] = CALL_abstractmetamodel___MMDirectory___name(variable[0])(variable[0]) /*MMDirectory::name*/;
321 /* Ensure var variable[4]: super-string element*/
322 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
323 /* Register variable[4]: Once String constant */
324 if (once_value_10 != NIT_NULL) variable[4] = once_value_10;
325 else {
326 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("/"), TAG_Int(1)) /*new String*/;
327 once_value_10 = variable[4];
328 }
329 /* Register variable[4]: Result */
330 /* Ensure var variable[4]: super-string element*/
331 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
332 variable[4] = variable[1] /*module_name*/ /* Ensure var: super-string element*/;
333 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
334 /* Register variable[4]: Once String constant */
335 if (once_value_11 != NIT_NULL) variable[4] = once_value_11;
336 else {
337 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
338 once_value_11 = variable[4];
339 }
340 /* Register variable[4]: Result */
341 /* Ensure var variable[4]: super-string element*/
342 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
343 /* Register variable[3]: Result */
344 variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
345 /* Register variable[3]: Result */
346 variable[3] = CALL_symbol___String___to_symbol(variable[3])(variable[3]) /*String::to_symbol*/;
347 variable[2] = variable[3];
348 goto return_label8;
349 return_label8: while(false);
350 tracehead = trace.prev;
351 return variable[2];
352 }
353 val_t abstractmetamodel___MMModule___to_s(val_t self) {
354 struct trace_t trace = {NULL, NULL, 246, LOCATE_abstractmetamodel___MMModule___to_s};
355 val_t variable[3];
356 struct WBT_ **closurevariable = NULL;
357 trace.prev = tracehead; tracehead = &trace;
358 trace.file = LOCATE_abstractmetamodel;
359 /* Register variable[0]: Local variable */
360 variable[0] = self;
361 /* Register variable[1]: Method return value and escape marker */
362 /* Register variable[2]: Result */
363 variable[2] = CALL_abstractmetamodel___MMModule___name(variable[0])(variable[0]) /*MMModule::name*/;
364 /* Register variable[2]: Result */
365 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Symbol::to_s*/;
366 variable[1] = variable[2];
367 goto return_label12;
368 return_label12: while(false);
369 tracehead = trace.prev;
370 return variable[1];
371 }
372 val_t abstractmetamodel___MMModule___context(val_t self) {
373 struct trace_t trace = {NULL, NULL, 117, LOCATE_abstractmetamodel___MMModule___context};
374 val_t *variable = NULL;
375 struct WBT_ **closurevariable = NULL;
376 trace.prev = tracehead; tracehead = &trace;
377 trace.file = LOCATE_abstractmetamodel;
378 tracehead = trace.prev;
379 return ATTR_abstractmetamodel___MMModule____context( self) /*MMModule::_context*/;
380 }
381 val_t abstractmetamodel___MMModule___name(val_t self) {
382 struct trace_t trace = {NULL, NULL, 120, LOCATE_abstractmetamodel___MMModule___name};
383 val_t *variable = NULL;
384 struct WBT_ **closurevariable = NULL;
385 trace.prev = tracehead; tracehead = &trace;
386 trace.file = LOCATE_abstractmetamodel;
387 tracehead = trace.prev;
388 return ATTR_abstractmetamodel___MMModule____name( self) /*MMModule::_name*/;
389 }
390 val_t abstractmetamodel___MMModule___full_name(val_t self) {
391 struct trace_t trace = {NULL, NULL, 123, LOCATE_abstractmetamodel___MMModule___full_name};
392 val_t *variable = NULL;
393 struct WBT_ **closurevariable = NULL;
394 trace.prev = tracehead; tracehead = &trace;
395 trace.file = LOCATE_abstractmetamodel;
396 tracehead = trace.prev;
397 return ATTR_abstractmetamodel___MMModule____full_name( self) /*MMModule::_full_name*/;
398 }
399 val_t abstractmetamodel___MMModule___directory(val_t self) {
400 struct trace_t trace = {NULL, NULL, 126, LOCATE_abstractmetamodel___MMModule___directory};
401 val_t *variable = NULL;
402 struct WBT_ **closurevariable = NULL;
403 trace.prev = tracehead; tracehead = &trace;
404 trace.file = LOCATE_abstractmetamodel;
405 tracehead = trace.prev;
406 return ATTR_abstractmetamodel___MMModule____directory( self) /*MMModule::_directory*/;
407 }
408 val_t abstractmetamodel___MMModule___filename(val_t self) {
409 struct trace_t trace = {NULL, NULL, 129, LOCATE_abstractmetamodel___MMModule___filename};
410 val_t *variable = NULL;
411 struct WBT_ **closurevariable = NULL;
412 trace.prev = tracehead; tracehead = &trace;
413 trace.file = LOCATE_abstractmetamodel;
414 tracehead = trace.prev;
415 return ATTR_abstractmetamodel___MMModule____filename( self) /*MMModule::_filename*/;
416 }
417 val_t abstractmetamodel___MMModule___mhe(val_t self) {
418 struct trace_t trace = {NULL, NULL, 132, LOCATE_abstractmetamodel___MMModule___mhe};
419 val_t *variable = NULL;
420 struct WBT_ **closurevariable = NULL;
421 trace.prev = tracehead; tracehead = &trace;
422 trace.file = LOCATE_abstractmetamodel;
423 tracehead = trace.prev;
424 return ATTR_abstractmetamodel___MMModule____mhe( self) /*MMModule::_mhe*/;
425 }
426 val_t abstractmetamodel___MMModule___global_classes(val_t self) {
427 struct trace_t trace = {NULL, NULL, 135, LOCATE_abstractmetamodel___MMModule___global_classes};
428 val_t *variable = NULL;
429 struct WBT_ **closurevariable = NULL;
430 trace.prev = tracehead; tracehead = &trace;
431 trace.file = LOCATE_abstractmetamodel;
432 tracehead = trace.prev;
433 return ATTR_abstractmetamodel___MMModule____global_classes( self) /*MMModule::_global_classes*/;
434 }
435 val_t abstractmetamodel___MMModule___local_classes(val_t self) {
436 struct trace_t trace = {NULL, NULL, 138, LOCATE_abstractmetamodel___MMModule___local_classes};
437 val_t *variable = NULL;
438 struct WBT_ **closurevariable = NULL;
439 trace.prev = tracehead; tracehead = &trace;
440 trace.file = LOCATE_abstractmetamodel;
441 tracehead = trace.prev;
442 return ATTR_abstractmetamodel___MMModule____local_classes( self) /*MMModule::_local_classes*/;
443 }
444 val_t abstractmetamodel___MMModule___class_specialization_hierarchy(val_t self) {
445 struct trace_t trace = {NULL, NULL, 141, LOCATE_abstractmetamodel___MMModule___class_specialization_hierarchy};
446 val_t *variable = NULL;
447 struct WBT_ **closurevariable = NULL;
448 trace.prev = tracehead; tracehead = &trace;
449 trace.file = LOCATE_abstractmetamodel;
450 tracehead = trace.prev;
451 return ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy( self) /*MMModule::_class_specialization_hierarchy*/;
452 }
453 val_t abstractmetamodel___MMModule___explicit_imported_modules(val_t self) {
454 struct trace_t trace = {NULL, NULL, 153, LOCATE_abstractmetamodel___MMModule___explicit_imported_modules};
455 val_t *variable = NULL;
456 struct WBT_ **closurevariable = NULL;
457 trace.prev = tracehead; tracehead = &trace;
458 trace.file = LOCATE_abstractmetamodel;
459 tracehead = trace.prev;
460 return ATTR_abstractmetamodel___MMModule____explicit_imported_modules( self) /*MMModule::_explicit_imported_modules*/;
461 }
462 void abstractmetamodel___MMModule___init(val_t self, val_t param0, val_t param1, val_t param2, val_t param3, int* init_table) {
463 struct trace_t trace = {NULL, NULL, 162, LOCATE_abstractmetamodel___MMModule___init};
464 val_t variable[7];
465 struct WBT_ **closurevariable = NULL;
466 trace.prev = tracehead; tracehead = &trace;
467 trace.file = LOCATE_abstractmetamodel;
468 /* Register variable[0]: Local variable */
469 variable[0] = self;
470 /* Register variable[1]: Local variable */
471 variable[1] = param0;
472 /* Register variable[2]: Local variable */
473 variable[2] = param1;
474 /* Register variable[3]: Local variable */
475 variable[3] = param2;
476 /* Register variable[4]: Local variable */
477 variable[4] = param3;
478 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMModule].i]) return;
479 /* Register variable[5]: Method return value and escape marker */
480 ATTR_abstractmetamodel___MMModule____name(variable[0]) /*MMModule::_name*/ = variable[1] /*name*/;
481 ATTR_abstractmetamodel___MMModule____directory(variable[0]) /*MMModule::_directory*/ = variable[2] /*dir*/;
482 ATTR_abstractmetamodel___MMModule____context(variable[0]) /*MMModule::_context*/ = variable[3] /*context*/;
483 /* Register variable[6]: Result */
484 variable[6] = TAG_Bool(( variable[2] /*dir*/ == NIT_NULL /*null*/) || (( variable[2] /*dir*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*dir*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*dir*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*dir*/)( variable[2] /*dir*/, NIT_NULL /*null*/) /*Object::==*/)))));
485 if (UNTAG_Bool(variable[6])) { /*if*/
486 ATTR_abstractmetamodel___MMModule____full_name(variable[0]) /*MMModule::_full_name*/ = variable[1] /*name*/;
487 } else { /*if*/
488 /* Register variable[6]: Result */
489 variable[6] = CALL_abstractmetamodel___MMDirectory___full_name_for( variable[2] /*dir*/)( variable[2] /*dir*/, variable[1] /*name*/) /*MMDirectory::full_name_for*/;
490 ATTR_abstractmetamodel___MMModule____full_name(variable[0]) /*MMModule::_full_name*/ = variable[6];
491 }
492 ATTR_abstractmetamodel___MMModule____filename(variable[0]) /*MMModule::_filename*/ = variable[4] /*filename*/;
493 return_label13: while(false);
494 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMModule].i] = 1;
495 tracehead = trace.prev;
496 return;
497 }
498 void abstractmetamodel___MMModule___add_super_module(val_t self, val_t param0, val_t param1) {
499 struct trace_t trace = {NULL, NULL, 176, LOCATE_abstractmetamodel___MMModule___add_super_module};
500 val_t variable[6];
501 struct WBT_ **closurevariable = NULL;
502 trace.prev = tracehead; tracehead = &trace;
503 trace.file = LOCATE_abstractmetamodel;
504 /* Register variable[0]: Local variable */
505 variable[0] = self;
506 /* Register variable[1]: Local variable */
507 variable[1] = param0;
508 /* Register variable[2]: Local variable */
509 variable[2] = param1;
510 /* Register variable[3]: Method return value and escape marker */
511 /* Register variable[4]: Result */
512 variable[4] = ATTR_abstractmetamodel___MMModule____explicit_imported_modules(variable[0]) /*MMModule::_explicit_imported_modules*/;
513 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[1] /*m*/) /*SimpleCollection::add*/;
514 /* Register variable[4]: Result */
515 variable[4] = TAG_Bool(( variable[2] /*visibility_level*/)==( TAG_Int(0)));
516 if (UNTAG_Bool(variable[4])) { /*if*/
517 /* Register variable[4]: Result */
518 variable[4] = ATTR_abstractmetamodel___MMModule____intrude_modules(variable[0]) /*MMModule::_intrude_modules*/;
519 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[1] /*m*/) /*SimpleCollection::add*/;
520 /* Register variable[4]: Result */
521 variable[4] = ATTR_abstractmetamodel___MMModule____intrude_modules(variable[0]) /*MMModule::_intrude_modules*/;
522 /* Register variable[5]: Result */
523 variable[5] = ATTR_abstractmetamodel___MMModule____intrude_modules( variable[1] /*m*/) /*MMModule::_intrude_modules*/;
524 CALL_abstract_collection___SimpleCollection___add_all(variable[4])(variable[4], variable[5]) /*SimpleCollection::add_all*/;
525 /* Register variable[4]: Result */
526 variable[4] = ATTR_abstractmetamodel___MMModule____public_modules(variable[0]) /*MMModule::_public_modules*/;
527 /* Register variable[5]: Result */
528 variable[5] = ATTR_abstractmetamodel___MMModule____public_modules( variable[1] /*m*/) /*MMModule::_public_modules*/;
529 CALL_abstract_collection___SimpleCollection___add_all(variable[4])(variable[4], variable[5]) /*SimpleCollection::add_all*/;
530 /* Register variable[4]: Result */
531 variable[4] = ATTR_abstractmetamodel___MMModule____private_modules(variable[0]) /*MMModule::_private_modules*/;
532 /* Register variable[5]: Result */
533 variable[5] = ATTR_abstractmetamodel___MMModule____private_modules( variable[1] /*m*/) /*MMModule::_private_modules*/;
534 CALL_abstract_collection___SimpleCollection___add_all(variable[4])(variable[4], variable[5]) /*SimpleCollection::add_all*/;
535 } else { /*if*/
536 /* Register variable[4]: Result */
537 variable[4] = TAG_Bool(( variable[2] /*visibility_level*/)==( TAG_Int(1)));
538 if (UNTAG_Bool(variable[4])) { /*if*/
539 /* Register variable[4]: Result */
540 variable[4] = ATTR_abstractmetamodel___MMModule____public_modules(variable[0]) /*MMModule::_public_modules*/;
541 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[1] /*m*/) /*SimpleCollection::add*/;
542 /* Register variable[4]: Result */
543 variable[4] = ATTR_abstractmetamodel___MMModule____public_modules(variable[0]) /*MMModule::_public_modules*/;
544 /* Register variable[5]: Result */
545 variable[5] = ATTR_abstractmetamodel___MMModule____intrude_modules( variable[1] /*m*/) /*MMModule::_intrude_modules*/;
546 CALL_abstract_collection___SimpleCollection___add_all(variable[4])(variable[4], variable[5]) /*SimpleCollection::add_all*/;
547 /* Register variable[4]: Result */
548 variable[4] = ATTR_abstractmetamodel___MMModule____public_modules(variable[0]) /*MMModule::_public_modules*/;
549 /* Register variable[5]: Result */
550 variable[5] = ATTR_abstractmetamodel___MMModule____public_modules( variable[1] /*m*/) /*MMModule::_public_modules*/;
551 CALL_abstract_collection___SimpleCollection___add_all(variable[4])(variable[4], variable[5]) /*SimpleCollection::add_all*/;
552 } else { /*if*/
553 /* Register variable[4]: Result */
554 variable[4] = ATTR_abstractmetamodel___MMModule____private_modules(variable[0]) /*MMModule::_private_modules*/;
555 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[1] /*m*/) /*SimpleCollection::add*/;
556 /* Register variable[4]: Result */
557 variable[4] = ATTR_abstractmetamodel___MMModule____private_modules(variable[0]) /*MMModule::_private_modules*/;
558 /* Register variable[5]: Result */
559 variable[5] = ATTR_abstractmetamodel___MMModule____intrude_modules( variable[1] /*m*/) /*MMModule::_intrude_modules*/;
560 CALL_abstract_collection___SimpleCollection___add_all(variable[4])(variable[4], variable[5]) /*SimpleCollection::add_all*/;
561 /* Register variable[4]: Result */
562 variable[4] = ATTR_abstractmetamodel___MMModule____private_modules(variable[0]) /*MMModule::_private_modules*/;
563 /* Register variable[5]: Result */
564 variable[5] = ATTR_abstractmetamodel___MMModule____public_modules( variable[1] /*m*/) /*MMModule::_public_modules*/;
565 CALL_abstract_collection___SimpleCollection___add_all(variable[4])(variable[4], variable[5]) /*SimpleCollection::add_all*/;
566 }
567 }
568 return_label14: while(false);
569 tracehead = trace.prev;
570 return;
571 }
572 val_t abstractmetamodel___MMModule___visibility_for(val_t self, val_t param0) {
573 struct trace_t trace = {NULL, NULL, 200, LOCATE_abstractmetamodel___MMModule___visibility_for};
574 val_t variable[4];
575 struct WBT_ **closurevariable = NULL;
576 trace.prev = tracehead; tracehead = &trace;
577 trace.file = LOCATE_abstractmetamodel;
578 /* Register variable[0]: Local variable */
579 variable[0] = self;
580 /* Register variable[1]: Local variable */
581 variable[1] = param0;
582 /* Register variable[2]: Method return value and escape marker */
583 /* Register variable[3]: Result */
584 variable[3] = TAG_Bool(( variable[1] /*m*/ == variable[0]) || (( variable[1] /*m*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*m*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*m*/,variable[0])):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*m*/)( variable[1] /*m*/, variable[0]) /*Object::==*/)))));
585 /* Ensure var variable[3]: Left 'or' operand*/
586 if (!UNTAG_Bool(variable[3])) { /* or */
587 /* Register variable[3]: Result */
588 variable[3] = ATTR_abstractmetamodel___MMModule____intrude_modules(variable[0]) /*MMModule::_intrude_modules*/;
589 /* Register variable[3]: Result */
590 variable[3] = CALL_abstract_collection___Collection___has(variable[3])(variable[3], variable[1] /*m*/) /*Collection::has*/;
591 }
592 /* Register variable[3]: Result */
593 if (UNTAG_Bool(variable[3])) { /*if*/
594 variable[2] = TAG_Int(3);
595 goto return_label15;
596 } else { /*if*/
597 /* Register variable[3]: Result */
598 variable[3] = ATTR_abstractmetamodel___MMModule____public_modules(variable[0]) /*MMModule::_public_modules*/;
599 /* Register variable[3]: Result */
600 variable[3] = CALL_abstract_collection___Collection___has(variable[3])(variable[3], variable[1] /*m*/) /*Collection::has*/;
601 if (UNTAG_Bool(variable[3])) { /*if*/
602 variable[2] = TAG_Int(2);
603 goto return_label15;
604 } else { /*if*/
605 /* Register variable[3]: Result */
606 variable[3] = ATTR_abstractmetamodel___MMModule____private_modules(variable[0]) /*MMModule::_private_modules*/;
607 /* Register variable[3]: Result */
608 variable[3] = CALL_abstract_collection___Collection___has(variable[3])(variable[3], variable[1] /*m*/) /*Collection::has*/;
609 if (UNTAG_Bool(variable[3])) { /*if*/
610 variable[2] = TAG_Int(1);
611 goto return_label15;
612 } else { /*if*/
613 variable[2] = TAG_Int(0);
614 goto return_label15;
615 }
616 }
617 }
618 return_label15: while(false);
619 tracehead = trace.prev;
620 return variable[2];
621 }
622 val_t abstractmetamodel___MMModule_____bra(val_t self, val_t param0) {
623 struct trace_t trace = {NULL, NULL, 219, LOCATE_abstractmetamodel___MMModule_____bra};
624 val_t variable[4];
625 struct WBT_ **closurevariable = NULL;
626 trace.prev = tracehead; tracehead = &trace;
627 trace.file = LOCATE_abstractmetamodel;
628 /* Register variable[0]: Local variable */
629 variable[0] = self;
630 /* Register variable[1]: Local variable */
631 variable[1] = param0;
632 /* Register variable[2]: Method return value and escape marker */
633 /* Register variable[3]: Result */
634 variable[3] = ATTR_abstractmetamodel___MMModule____local_class_by_global(variable[0]) /*MMModule::_local_class_by_global*/;
635 /* Register variable[3]: Result */
636 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::==*/)))))));
637 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMModule_____bra, LOCATE_abstractmetamodel, 222); nit_exit(1);}
638 /* Register variable[3]: Result */
639 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::==*/)))))));
640 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMModule_____bra, LOCATE_abstractmetamodel, 223); nit_exit(1);}
641 /* Register variable[3]: Result */
642 variable[3] = ATTR_abstractmetamodel___MMModule____local_class_by_global(variable[0]) /*MMModule::_local_class_by_global*/;
643 /* Register variable[3]: Result */
644 variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[1] /*c*/) /*MapRead::[]*/;
645 variable[2] = variable[3];
646 goto return_label16;
647 return_label16: while(false);
648 tracehead = trace.prev;
649 return variable[2];
650 }
651 val_t abstractmetamodel___MMModule___class_by_name(val_t self, val_t param0) {
652 struct trace_t trace = {NULL, NULL, 227, LOCATE_abstractmetamodel___MMModule___class_by_name};
653 val_t variable[4];
654 struct WBT_ **closurevariable = NULL;
655 trace.prev = tracehead; tracehead = &trace;
656 trace.file = LOCATE_abstractmetamodel;
657 /* Register variable[0]: Local variable */
658 variable[0] = self;
659 /* Register variable[1]: Local variable */
660 variable[1] = param0;
661 /* Register variable[2]: Method return value and escape marker */
662 /* Register variable[3]: Result */
663 variable[3] = ATTR_abstractmetamodel___MMModule____global_class_by_name(variable[0]) /*MMModule::_global_class_by_name*/;
664 /* Register variable[3]: Result */
665 variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[1] /*n*/) /*MapRead::[]*/;
666 /* Register variable[3]: Result */
667 variable[3] = CALL_abstractmetamodel___MMModule_____bra(variable[0])(variable[0], variable[3]) /*MMModule::[]*/;
668 variable[2] = variable[3];
669 goto return_label17;
670 return_label17: while(false);
671 tracehead = trace.prev;
672 return variable[2];
673 }
674 val_t abstractmetamodel___MMModule___has_global_class_named(val_t self, val_t param0) {
675 struct trace_t trace = {NULL, NULL, 233, LOCATE_abstractmetamodel___MMModule___has_global_class_named};
676 val_t variable[4];
677 struct WBT_ **closurevariable = NULL;
678 trace.prev = tracehead; tracehead = &trace;
679 trace.file = LOCATE_abstractmetamodel;
680 /* Register variable[0]: Local variable */
681 variable[0] = self;
682 /* Register variable[1]: Local variable */
683 variable[1] = param0;
684 /* Register variable[2]: Method return value and escape marker */
685 /* Register variable[3]: Result */
686 variable[3] = ATTR_abstractmetamodel___MMModule____global_class_by_name(variable[0]) /*MMModule::_global_class_by_name*/;
687 /* Register variable[3]: Result */
688 variable[3] = CALL_abstract_collection___MapRead___has_key(variable[3])(variable[3], variable[1] /*n*/) /*MapRead::has_key*/;
689 variable[2] = variable[3];
690 goto return_label18;
691 return_label18: while(false);
692 tracehead = trace.prev;
693 return variable[2];
694 }
695 val_t abstractmetamodel___MMModule___global_class_named(val_t self, val_t param0) {
696 struct trace_t trace = {NULL, NULL, 239, LOCATE_abstractmetamodel___MMModule___global_class_named};
697 val_t variable[4];
698 struct WBT_ **closurevariable = NULL;
699 trace.prev = tracehead; tracehead = &trace;
700 trace.file = LOCATE_abstractmetamodel;
701 /* Register variable[0]: Local variable */
702 variable[0] = self;
703 /* Register variable[1]: Local variable */
704 variable[1] = param0;
705 /* Register variable[2]: Method return value and escape marker */
706 /* Register variable[3]: Result */
707 variable[3] = ATTR_abstractmetamodel___MMModule____global_class_by_name(variable[0]) /*MMModule::_global_class_by_name*/;
708 /* Register variable[3]: Result */
709 variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[1] /*n*/) /*MapRead::[]*/;
710 variable[2] = variable[3];
711 goto return_label19;
712 return_label19: while(false);
713 tracehead = trace.prev;
714 return variable[2];
715 }
716 void abstractmetamodel___MMModule___set_supers_class(val_t self, val_t param0, val_t param1) {
717 struct trace_t trace = {NULL, NULL, 248, LOCATE_abstractmetamodel___MMModule___set_supers_class};
718 val_t variable[7];
719 struct WBT_ **closurevariable = NULL;
720 trace.prev = tracehead; tracehead = &trace;
721 trace.file = LOCATE_abstractmetamodel;
722 /* Register variable[0]: Local variable */
723 variable[0] = self;
724 /* Register variable[1]: Local variable */
725 variable[1] = param0;
726 /* Register variable[2]: Local variable */
727 variable[2] = param1;
728 /* Register variable[3]: Method return value and escape marker */
729 /* Register variable[4]: Result */
730 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*supers*/ == NIT_NULL /*null*/) || (( variable[2] /*supers*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*supers*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*supers*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*supers*/)( variable[2] /*supers*/, NIT_NULL /*null*/) /*Object::==*/)))))));
731 if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMModule___set_supers_class, LOCATE_abstractmetamodel, 251); nit_exit(1);}
732 /* Register variable[4]: Local variable */
733 /* Register variable[5]: Result */
734 variable[5] = ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy(variable[0]) /*MMModule::_class_specialization_hierarchy*/;
735 /* Register variable[5]: Result */
736 variable[5] = CALL_partial_order___PartialOrder___select_smallests(variable[5])(variable[5], variable[2] /*supers*/) /*PartialOrder::select_smallests*/;
737 variable[4] = variable[5];
738 /* Register variable[5]: Result */
739 variable[5] = ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy(variable[0]) /*MMModule::_class_specialization_hierarchy*/;
740 /* Register variable[5]: Result */
741 variable[5] = CALL_partial_order___PartialOrder___add(variable[5])(variable[5], variable[1] /*c*/, variable[4] /*tab*/) /*PartialOrder::add*/;
742 ATTR_abstractmetamodel___MMLocalClass____cshe( variable[1] /*c*/) /*MMLocalClass::_cshe*/ = variable[5];
743 /* Register variable[5]: Local variable */
744 /* Register variable[6]: Result */
745 variable[6] = CALL_abstractmetamodel___MMLocalClass___crhe( variable[1] /*c*/)( variable[1] /*c*/) /*MMLocalClass::crhe*/;
746 /* Register variable[6]: Result */
747 variable[6] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[6])(variable[6]) /*PartialOrderElement::direct_greaters*/;
748 /* Register variable[6]: Result */
749 variable[6] = CALL_array___Collection___to_a(variable[6])(variable[6]) /*Collection::to_a*/;
750 variable[5] = variable[6];
751 CALL_abstract_collection___SimpleCollection___add_all( variable[5] /*tab_all*/)( variable[5] /*tab_all*/, variable[4] /*tab*/) /*SimpleCollection::add_all*/;
752 /* Register variable[6]: Result */
753 variable[6] = CALL_abstractmetamodel___MMModule___context(variable[0])(variable[0]) /*MMModule::context*/;
754 CALL_abstractmetamodel___MMContext___add_local_class(variable[6])(variable[6], variable[1] /*c*/, variable[5] /*tab_all*/) /*MMContext::add_local_class*/;
755 return_label20: while(false);
756 tracehead = trace.prev;
757 return;
758 }
759 void abstractmetamodel___MMModule___register_global_class(val_t self, val_t param0) {
760 struct trace_t trace = {NULL, NULL, 259, LOCATE_abstractmetamodel___MMModule___register_global_class};
761 val_t variable[5];
762 struct WBT_ **closurevariable = NULL;
763 trace.prev = tracehead; tracehead = &trace;
764 trace.file = LOCATE_abstractmetamodel;
765 /* Register variable[0]: Local variable */
766 variable[0] = self;
767 /* Register variable[1]: Local variable */
768 variable[1] = param0;
769 /* Register variable[2]: Method return value and escape marker */
770 /* Register variable[3]: Result */
771 variable[3] = CALL_abstractmetamodel___MMLocalClass___global( variable[1] /*c*/)( variable[1] /*c*/) /*MMLocalClass::global*/;
772 /* Register variable[3]: Result */
773 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::==*/)))))));
774 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMModule___register_global_class, LOCATE_abstractmetamodel, 262); nit_exit(1);}
775 /* Register variable[3]: Result */
776 variable[3] = ATTR_abstractmetamodel___MMModule____local_class_by_global(variable[0]) /*MMModule::_local_class_by_global*/;
777 /* Register variable[4]: Result */
778 variable[4] = CALL_abstractmetamodel___MMLocalClass___global( variable[1] /*c*/)( variable[1] /*c*/) /*MMLocalClass::global*/;
779 CALL_abstract_collection___Map_____braeq(variable[3])(variable[3], variable[4], variable[1] /*c*/) /*Map::[]=*/;
780 return_label21: while(false);
781 tracehead = trace.prev;
782 return;
783 }
784 val_t abstractmetamodel___MMGlobalClass___to_s(val_t self) {
785 struct trace_t trace = {NULL, NULL, 294, LOCATE_abstractmetamodel___MMGlobalClass___to_s};
786 val_t variable[3];
787 struct WBT_ **closurevariable = NULL;
788 trace.prev = tracehead; tracehead = &trace;
789 trace.file = LOCATE_abstractmetamodel;
790 /* Register variable[0]: Local variable */
791 variable[0] = self;
792 /* Register variable[1]: Method return value and escape marker */
793 /* Register variable[2]: Result */
794 variable[2] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[0])(variable[0]) /*MMGlobalClass::intro*/;
795 /* Register variable[2]: Result */
796 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*MMLocalClass::to_s*/;
797 variable[1] = variable[2];
798 goto return_label22;
799 return_label22: while(false);
800 tracehead = trace.prev;
801 return variable[1];
802 }
803 val_t abstractmetamodel___MMGlobalClass___intro(val_t self) {
804 struct trace_t trace = {NULL, NULL, 268, LOCATE_abstractmetamodel___MMGlobalClass___intro};
805 val_t *variable = NULL;
806 struct WBT_ **closurevariable = NULL;
807 trace.prev = tracehead; tracehead = &trace;
808 trace.file = LOCATE_abstractmetamodel;
809 tracehead = trace.prev;
810 return ATTR_abstractmetamodel___MMGlobalClass____intro( self) /*MMGlobalClass::_intro*/;
811 }
812 val_t abstractmetamodel___MMGlobalClass___class_refinement_hierarchy(val_t self) {
813 struct trace_t trace = {NULL, NULL, 271, LOCATE_abstractmetamodel___MMGlobalClass___class_refinement_hierarchy};
814 val_t *variable = NULL;
815 struct WBT_ **closurevariable = NULL;
816 trace.prev = tracehead; tracehead = &trace;
817 trace.file = LOCATE_abstractmetamodel;
818 tracehead = trace.prev;
819 return ATTR_abstractmetamodel___MMGlobalClass____class_refinement_hierarchy( self) /*MMGlobalClass::_class_refinement_hierarchy*/;
820 }
821 void abstractmetamodel___MMGlobalClass___init(val_t self, val_t param0, int* init_table) {
822 struct trace_t trace = {NULL, NULL, 275, LOCATE_abstractmetamodel___MMGlobalClass___init};
823 val_t variable[4];
824 struct WBT_ **closurevariable = NULL;
825 trace.prev = tracehead; tracehead = &trace;
826 trace.file = LOCATE_abstractmetamodel;
827 /* Register variable[0]: Local variable */
828 variable[0] = self;
829 /* Register variable[1]: Local variable */
830 variable[1] = param0;
831 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMGlobalClass].i]) return;
832 /* Register variable[2]: Method return value and escape marker */
833 ATTR_abstractmetamodel___MMGlobalClass____intro(variable[0]) /*MMGlobalClass::_intro*/ = variable[1] /*c*/;
834 /* Register variable[3]: Result */
835 variable[3] = CALL_abstractmetamodel___MMLocalClass___context( variable[1] /*c*/)( variable[1] /*c*/) /*MMLocalClass::context*/;
836 CALL_abstractmetamodel___MMContext___add_global_class(variable[3])(variable[3], variable[0]) /*MMContext::add_global_class*/;
837 return_label23: while(false);
838 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMGlobalClass].i] = 1;
839 tracehead = trace.prev;
840 return;
841 }
842 val_t abstractmetamodel___MMGlobalClass___name(val_t self) {
843 struct trace_t trace = {NULL, NULL, 282, LOCATE_abstractmetamodel___MMGlobalClass___name};
844 val_t variable[3];
845 struct WBT_ **closurevariable = NULL;
846 trace.prev = tracehead; tracehead = &trace;
847 trace.file = LOCATE_abstractmetamodel;
848 /* Register variable[0]: Local variable */
849 variable[0] = self;
850 /* Register variable[1]: Method return value and escape marker */
851 /* Register variable[2]: Result */
852 variable[2] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[0])(variable[0]) /*MMGlobalClass::intro*/;
853 /* Register variable[2]: Result */
854 variable[2] = CALL_abstractmetamodel___MMLocalClass___name(variable[2])(variable[2]) /*MMLocalClass::name*/;
855 variable[1] = variable[2];
856 goto return_label24;
857 return_label24: while(false);
858 tracehead = trace.prev;
859 return variable[1];
860 }
861 val_t abstractmetamodel___MMGlobalClass___module(val_t self) {
862 struct trace_t trace = {NULL, NULL, 288, LOCATE_abstractmetamodel___MMGlobalClass___module};
863 val_t variable[3];
864 struct WBT_ **closurevariable = NULL;
865 trace.prev = tracehead; tracehead = &trace;
866 trace.file = LOCATE_abstractmetamodel;
867 /* Register variable[0]: Local variable */
868 variable[0] = self;
869 /* Register variable[1]: Method return value and escape marker */
870 /* Register variable[2]: Result */
871 variable[2] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[0])(variable[0]) /*MMGlobalClass::intro*/;
872 /* Register variable[2]: Result */
873 variable[2] = CALL_abstractmetamodel___MMLocalClass___module(variable[2])(variable[2]) /*MMLocalClass::module*/;
874 variable[1] = variable[2];
875 goto return_label25;
876 return_label25: while(false);
877 tracehead = trace.prev;
878 return variable[1];
879 }
880 void abstractmetamodel___MMGlobalClass___register_local_class(val_t self, val_t param0) {
881 struct trace_t trace = {NULL, NULL, 299, LOCATE_abstractmetamodel___MMGlobalClass___register_local_class};
882 val_t variable[9];
883 struct WBT_ **closurevariable = NULL;
884 trace.prev = tracehead; tracehead = &trace;
885 trace.file = LOCATE_abstractmetamodel;
886 /* Register variable[0]: Local variable */
887 variable[0] = self;
888 /* Register variable[1]: Local variable */
889 variable[1] = param0;
890 /* Register variable[2]: Method return value and escape marker */
891 /* Register variable[3]: Result */
892 variable[3] = CALL_abstractmetamodel___MMLocalClass___module( variable[1] /*c*/)( variable[1] /*c*/) /*MMLocalClass::module*/;
893 /* Register variable[3]: Result */
894 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::==*/)))))));
895 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMGlobalClass___register_local_class, LOCATE_abstractmetamodel, 302); nit_exit(1);}
896 /* Register variable[3]: Result */
897 variable[3] = CALL_abstractmetamodel___MMLocalClass___crhe( variable[1] /*c*/)( variable[1] /*c*/) /*MMLocalClass::crhe*/;
898 /* Register variable[3]: Result */
899 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::==*/)))));
900 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMGlobalClass___register_local_class, LOCATE_abstractmetamodel, 303); nit_exit(1);}
901 /* Register variable[3]: Local variable */
902 /* Register variable[4]: Result */
903 variable[4] = NEW_Array_array___Array___init() /*new Array[MMLocalClass]*/;
904 variable[3] = variable[4];
905 /* Register variable[4]: Result */
906 variable[4] = CALL_abstractmetamodel___MMGlobalClass___class_refinement_hierarchy(variable[0])(variable[0]) /*MMGlobalClass::class_refinement_hierarchy*/;
907 /* Register variable[4]: For iterator */
908 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*PartialOrder::iterator*/;
909 while (true) { /*for*/
910 /* Register variable[5]: For 'is_ok' result */
911 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
912 if (!UNTAG_Bool(variable[5])) break; /*for*/
913 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
914 /* Register variable[6]: Local variable */
915 variable[6] = variable[5];
916 /* Register variable[7]: Result */
917 variable[7] = CALL_abstractmetamodel___MMLocalClass___module( variable[1] /*c*/)( variable[1] /*c*/) /*MMLocalClass::module*/;
918 /* Register variable[7]: Result */
919 variable[7] = CALL_abstractmetamodel___MMModule___mhe(variable[7])(variable[7]) /*MMModule::mhe*/;
920 /* Register variable[8]: Result */
921 variable[8] = CALL_abstractmetamodel___MMLocalClass___module( variable[6] /*s*/)( variable[6] /*s*/) /*MMLocalClass::module*/;
922 /* Register variable[7]: Result */
923 variable[7] = CALL_partial_order___PartialOrderElement_____l(variable[7])(variable[7], variable[8]) /*PartialOrderElement::<*/;
924 /* Ensure var variable[7]: Left 'and' operand*/
925 if (UNTAG_Bool(variable[7])) { /* and */
926 /* Register variable[7]: Result */
927 variable[7] = TAG_Bool(( variable[6] /*s*/==NIT_NULL) || VAL_ISA( variable[6] /*s*/, COLOR_MMConcreteClass, ID_MMConcreteClass)) /*cast MMConcreteClass*/;
928 }
929 /* Register variable[7]: Result */
930 if (UNTAG_Bool(variable[7])) { /*if*/
931 CALL_abstract_collection___SimpleCollection___add( variable[3] /*sup*/)( variable[3] /*sup*/, variable[6] /*s*/) /*AbstractArray::add*/;
932 }
933 continue_27: while(0);
934 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
935 }
936 break_27: while(0);
937 /* Register variable[4]: Result */
938 variable[4] = ATTR_abstractmetamodel___MMGlobalClass____class_refinement_hierarchy(variable[0]) /*MMGlobalClass::_class_refinement_hierarchy*/;
939 /* Register variable[4]: Result */
940 variable[4] = CALL_partial_order___PartialOrder___add(variable[4])(variable[4], variable[1] /*c*/, variable[3] /*sup*/) /*PartialOrder::add*/;
941 ATTR_abstractmetamodel___MMLocalClass____crhe( variable[1] /*c*/) /*MMLocalClass::_crhe*/ = variable[4];
942 return_label26: while(false);
943 tracehead = trace.prev;
944 return;
945 }
946 val_t abstractmetamodel___MMGlobalClass___is_interface(val_t self) {
947 struct trace_t trace = {NULL, NULL, 313, LOCATE_abstractmetamodel___MMGlobalClass___is_interface};
948 val_t *variable = NULL;
949 struct WBT_ **closurevariable = NULL;
950 trace.prev = tracehead; tracehead = &trace;
951 trace.file = LOCATE_abstractmetamodel;
952 tracehead = trace.prev;
953 return ATTR_abstractmetamodel___MMGlobalClass____is_interface( self) /*MMGlobalClass::_is_interface*/;
954 }
955 void abstractmetamodel___MMGlobalClass___is_interface__eq(val_t self, val_t param0) {
956 struct trace_t trace = {NULL, NULL, 313, LOCATE_abstractmetamodel___MMGlobalClass___is_interface__eq};
957 val_t *variable = NULL;
958 struct WBT_ **closurevariable = NULL;
959 trace.prev = tracehead; tracehead = &trace;
960 trace.file = LOCATE_abstractmetamodel;
961 ATTR_abstractmetamodel___MMGlobalClass____is_interface( self) /*MMGlobalClass::_is_interface*/ = param0;
962 tracehead = trace.prev;
963 return;
964 }
965 val_t abstractmetamodel___MMGlobalClass___is_abstract(val_t self) {
966 struct trace_t trace = {NULL, NULL, 316, LOCATE_abstractmetamodel___MMGlobalClass___is_abstract};
967 val_t *variable = NULL;
968 struct WBT_ **closurevariable = NULL;
969 trace.prev = tracehead; tracehead = &trace;
970 trace.file = LOCATE_abstractmetamodel;
971 tracehead = trace.prev;
972 return ATTR_abstractmetamodel___MMGlobalClass____is_abstract( self) /*MMGlobalClass::_is_abstract*/;
973 }
974 void abstractmetamodel___MMGlobalClass___is_abstract__eq(val_t self, val_t param0) {
975 struct trace_t trace = {NULL, NULL, 316, LOCATE_abstractmetamodel___MMGlobalClass___is_abstract__eq};
976 val_t *variable = NULL;
977 struct WBT_ **closurevariable = NULL;
978 trace.prev = tracehead; tracehead = &trace;
979 trace.file = LOCATE_abstractmetamodel;
980 ATTR_abstractmetamodel___MMGlobalClass____is_abstract( self) /*MMGlobalClass::_is_abstract*/ = param0;
981 tracehead = trace.prev;
982 return;
983 }
984 val_t abstractmetamodel___MMGlobalClass___is_universal(val_t self) {
985 struct trace_t trace = {NULL, NULL, 319, LOCATE_abstractmetamodel___MMGlobalClass___is_universal};
986 val_t *variable = NULL;
987 struct WBT_ **closurevariable = NULL;
988 trace.prev = tracehead; tracehead = &trace;
989 trace.file = LOCATE_abstractmetamodel;
990 tracehead = trace.prev;
991 return ATTR_abstractmetamodel___MMGlobalClass____is_universal( self) /*MMGlobalClass::_is_universal*/;
992 }
993 void abstractmetamodel___MMGlobalClass___is_universal__eq(val_t self, val_t param0) {
994 struct trace_t trace = {NULL, NULL, 319, LOCATE_abstractmetamodel___MMGlobalClass___is_universal__eq};
995 val_t *variable = NULL;
996 struct WBT_ **closurevariable = NULL;
997 trace.prev = tracehead; tracehead = &trace;
998 trace.file = LOCATE_abstractmetamodel;
999 ATTR_abstractmetamodel___MMGlobalClass____is_universal( self) /*MMGlobalClass::_is_universal*/ = param0;
1000 tracehead = trace.prev;
1001 return;
1002 }
1003 val_t abstractmetamodel___MMGlobalClass___visibility_level(val_t self) {
1004 struct trace_t trace = {NULL, NULL, 322, LOCATE_abstractmetamodel___MMGlobalClass___visibility_level};
1005 val_t *variable = NULL;
1006 struct WBT_ **closurevariable = NULL;
1007 trace.prev = tracehead; tracehead = &trace;
1008 trace.file = LOCATE_abstractmetamodel;
1009 tracehead = trace.prev;
1010 return ATTR_abstractmetamodel___MMGlobalClass____visibility_level( self) /*MMGlobalClass::_visibility_level*/;
1011 }
1012 void abstractmetamodel___MMGlobalClass___visibility_level__eq(val_t self, val_t param0) {
1013 struct trace_t trace = {NULL, NULL, 322, LOCATE_abstractmetamodel___MMGlobalClass___visibility_level__eq};
1014 val_t *variable = NULL;
1015 struct WBT_ **closurevariable = NULL;
1016 trace.prev = tracehead; tracehead = &trace;
1017 trace.file = LOCATE_abstractmetamodel;
1018 ATTR_abstractmetamodel___MMGlobalClass____visibility_level( self) /*MMGlobalClass::_visibility_level*/ = param0;
1019 tracehead = trace.prev;
1020 return;
1021 }
1022 val_t abstractmetamodel___MMGlobalClass___is_mixin(val_t self) {
1023 struct trace_t trace = {NULL, NULL, 327, LOCATE_abstractmetamodel___MMGlobalClass___is_mixin};
1024 val_t variable[3];
1025 struct WBT_ **closurevariable = NULL;
1026 trace.prev = tracehead; tracehead = &trace;
1027 trace.file = LOCATE_abstractmetamodel;
1028 /* Register variable[0]: Local variable */
1029 variable[0] = self;
1030 /* Register variable[1]: Method return value and escape marker */
1031 /* Register variable[2]: Result */
1032 variable[2] = ATTR_abstractmetamodel___MMGlobalClass____mixin_of(variable[0]) /*MMGlobalClass::_mixin_of*/;
1033 /* Register variable[2]: Result */
1034 variable[2] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[2] == variable[0]) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2],variable[0])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], variable[0]) /*Object::==*/)))))));
1035 variable[1] = variable[2];
1036 goto return_label28;
1037 return_label28: while(false);
1038 tracehead = trace.prev;
1039 return variable[1];
1040 }
1041 val_t abstractmetamodel___MMGlobalClass___mixin_of(val_t self) {
1042 struct trace_t trace = {NULL, NULL, 334, LOCATE_abstractmetamodel___MMGlobalClass___mixin_of};
1043 val_t *variable = NULL;
1044 struct WBT_ **closurevariable = NULL;
1045 trace.prev = tracehead; tracehead = &trace;
1046 trace.file = LOCATE_abstractmetamodel;
1047 tracehead = trace.prev;
1048 return ATTR_abstractmetamodel___MMGlobalClass____mixin_of( self) /*MMGlobalClass::_mixin_of*/;
1049 }
1050 void abstractmetamodel___MMGlobalClass___mixin_of__eq(val_t self, val_t param0) {
1051 struct trace_t trace = {NULL, NULL, 334, LOCATE_abstractmetamodel___MMGlobalClass___mixin_of__eq};
1052 val_t *variable = NULL;
1053 struct WBT_ **closurevariable = NULL;
1054 trace.prev = tracehead; tracehead = &trace;
1055 trace.file = LOCATE_abstractmetamodel;
1056 ATTR_abstractmetamodel___MMGlobalClass____mixin_of( self) /*MMGlobalClass::_mixin_of*/ = param0;
1057 tracehead = trace.prev;
1058 return;
1059 }
1060 val_t abstractmetamodel___MMLocalClass___to_s(val_t self) {
1061 struct trace_t trace = {NULL, NULL, 519, LOCATE_abstractmetamodel___MMLocalClass___to_s};
1062 val_t variable[3];
1063 struct WBT_ **closurevariable = NULL;
1064 trace.prev = tracehead; tracehead = &trace;
1065 trace.file = LOCATE_abstractmetamodel;
1066 /* Register variable[0]: Local variable */
1067 variable[0] = self;
1068 /* Register variable[1]: Method return value and escape marker */
1069 /* Register variable[2]: Result */
1070 variable[2] = ATTR_abstractmetamodel___MMLocalClass____name(variable[0]) /*MMLocalClass::_name*/;
1071 /* Register variable[2]: Result */
1072 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Symbol::to_s*/;
1073 variable[1] = variable[2];
1074 goto return_label29;
1075 return_label29: while(false);
1076 tracehead = trace.prev;
1077 return variable[1];
1078 }
1079 val_t abstractmetamodel___MMLocalClass___name(val_t self) {
1080 struct trace_t trace = {NULL, NULL, 343, LOCATE_abstractmetamodel___MMLocalClass___name};
1081 val_t *variable = NULL;
1082 struct WBT_ **closurevariable = NULL;
1083 trace.prev = tracehead; tracehead = &trace;
1084 trace.file = LOCATE_abstractmetamodel;
1085 tracehead = trace.prev;
1086 return ATTR_abstractmetamodel___MMLocalClass____name( self) /*MMLocalClass::_name*/;
1087 }
1088 val_t abstractmetamodel___MMLocalClass___arity(val_t self) {
1089 struct trace_t trace = {NULL, NULL, 346, LOCATE_abstractmetamodel___MMLocalClass___arity};
1090 val_t *variable = NULL;
1091 struct WBT_ **closurevariable = NULL;
1092 trace.prev = tracehead; tracehead = &trace;
1093 trace.file = LOCATE_abstractmetamodel;
1094 tracehead = trace.prev;
1095 return ATTR_abstractmetamodel___MMLocalClass____arity( self) /*MMLocalClass::_arity*/;
1096 }
1097 val_t abstractmetamodel___MMLocalClass___module(val_t self) {
1098 struct trace_t trace = {NULL, NULL, 350, LOCATE_abstractmetamodel___MMLocalClass___module};
1099 val_t *variable = NULL;
1100 struct WBT_ **closurevariable = NULL;
1101 trace.prev = tracehead; tracehead = &trace;
1102 trace.file = LOCATE_abstractmetamodel;
1103 tracehead = trace.prev;
1104 return ATTR_abstractmetamodel___MMLocalClass____module( self) /*MMLocalClass::_module*/;
1105 }
1106 val_t abstractmetamodel___MMLocalClass___global(val_t self) {
1107 struct trace_t trace = {NULL, NULL, 353, LOCATE_abstractmetamodel___MMLocalClass___global};
1108 val_t *variable = NULL;
1109 struct WBT_ **closurevariable = NULL;
1110 trace.prev = tracehead; tracehead = &trace;
1111 trace.file = LOCATE_abstractmetamodel;
1112 tracehead = trace.prev;
1113 return ATTR_abstractmetamodel___MMLocalClass____global( self) /*MMLocalClass::_global*/;
1114 }
1115 val_t abstractmetamodel___MMLocalClass___crhe(val_t self) {
1116 struct trace_t trace = {NULL, NULL, 356, LOCATE_abstractmetamodel___MMLocalClass___crhe};
1117 val_t *variable = NULL;
1118 struct WBT_ **closurevariable = NULL;
1119 trace.prev = tracehead; tracehead = &trace;
1120 trace.file = LOCATE_abstractmetamodel;
1121 tracehead = trace.prev;
1122 return ATTR_abstractmetamodel___MMLocalClass____crhe( self) /*MMLocalClass::_crhe*/;
1123 }
1124 val_t abstractmetamodel___MMLocalClass___cshe(val_t self) {
1125 struct trace_t trace = {NULL, NULL, 359, LOCATE_abstractmetamodel___MMLocalClass___cshe};
1126 val_t *variable = NULL;
1127 struct WBT_ **closurevariable = NULL;
1128 trace.prev = tracehead; tracehead = &trace;
1129 trace.file = LOCATE_abstractmetamodel;
1130 tracehead = trace.prev;
1131 return ATTR_abstractmetamodel___MMLocalClass____cshe( self) /*MMLocalClass::_cshe*/;
1132 }
1133 val_t abstractmetamodel___MMLocalClass___che(val_t self) {
1134 struct trace_t trace = {NULL, NULL, 362, LOCATE_abstractmetamodel___MMLocalClass___che};
1135 val_t *variable = NULL;
1136 struct WBT_ **closurevariable = NULL;
1137 trace.prev = tracehead; tracehead = &trace;
1138 trace.file = LOCATE_abstractmetamodel;
1139 tracehead = trace.prev;
1140 return ATTR_abstractmetamodel___MMLocalClass____che( self) /*MMLocalClass::_che*/;
1141 }
1142 val_t abstractmetamodel___MMLocalClass___local_property_by_global(val_t self) {
1143 struct trace_t trace = {NULL, NULL, 365, LOCATE_abstractmetamodel___MMLocalClass___local_property_by_global};
1144 val_t *variable = NULL;
1145 struct WBT_ **closurevariable = NULL;
1146 trace.prev = tracehead; tracehead = &trace;
1147 trace.file = LOCATE_abstractmetamodel;
1148 tracehead = trace.prev;
1149 return ATTR_abstractmetamodel___MMLocalClass____local_property_by_global( self) /*MMLocalClass::_local_property_by_global*/;
1150 }
1151 val_t abstractmetamodel___MMLocalClass___global_properties(val_t self) {
1152 struct trace_t trace = {NULL, NULL, 368, LOCATE_abstractmetamodel___MMLocalClass___global_properties};
1153 val_t *variable = NULL;
1154 struct WBT_ **closurevariable = NULL;
1155 trace.prev = tracehead; tracehead = &trace;
1156 trace.file = LOCATE_abstractmetamodel;
1157 tracehead = trace.prev;
1158 return ATTR_abstractmetamodel___MMLocalClass____global_properties( self) /*MMLocalClass::_global_properties*/;
1159 }
1160 val_t abstractmetamodel___MMLocalClass___properties_by_name(val_t self) {
1161 struct trace_t trace = {NULL, NULL, 371, LOCATE_abstractmetamodel___MMLocalClass___properties_by_name};
1162 val_t *variable = NULL;
1163 struct WBT_ **closurevariable = NULL;
1164 trace.prev = tracehead; tracehead = &trace;
1165 trace.file = LOCATE_abstractmetamodel;
1166 tracehead = trace.prev;
1167 return ATTR_abstractmetamodel___MMLocalClass____properties_by_name( self) /*MMLocalClass::_properties_by_name*/;
1168 }
1169 void abstractmetamodel___MMLocalClass___init(val_t self, val_t param0, val_t param1, val_t param2, int* init_table) {
1170 struct trace_t trace = {NULL, NULL, 374, LOCATE_abstractmetamodel___MMLocalClass___init};
1171 val_t variable[6];
1172 struct WBT_ **closurevariable = NULL;
1173 trace.prev = tracehead; tracehead = &trace;
1174 trace.file = LOCATE_abstractmetamodel;
1175 /* Register variable[0]: Local variable */
1176 variable[0] = self;
1177 /* Register variable[1]: Local variable */
1178 variable[1] = param0;
1179 /* Register variable[2]: Local variable */
1180 variable[2] = param1;
1181 /* Register variable[3]: Local variable */
1182 variable[3] = param2;
1183 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMLocalClass].i]) return;
1184 /* Register variable[4]: Method return value and escape marker */
1185 ATTR_abstractmetamodel___MMLocalClass____module(variable[0]) /*MMLocalClass::_module*/ = variable[1] /*mod*/;
1186 ATTR_abstractmetamodel___MMLocalClass____name(variable[0]) /*MMLocalClass::_name*/ = variable[2] /*name*/;
1187 ATTR_abstractmetamodel___MMLocalClass____arity(variable[0]) /*MMLocalClass::_arity*/ = variable[3] /*arity*/;
1188 /* Register variable[5]: Result */
1189 variable[5] = ATTR_abstractmetamodel___MMModule____local_classes( variable[1] /*mod*/) /*MMModule::_local_classes*/;
1190 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[0]) /*AbstractArray::add*/;
1191 return_label30: while(false);
1192 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMLocalClass].i] = 1;
1193 tracehead = trace.prev;
1194 return;
1195 }
1196 val_t abstractmetamodel___MMLocalClass___for_module(val_t self, val_t param0) {
1197 struct trace_t trace = {NULL, NULL, 383, LOCATE_abstractmetamodel___MMLocalClass___for_module};
1198 val_t variable[4];
1199 struct WBT_ **closurevariable = NULL;
1200 trace.prev = tracehead; tracehead = &trace;
1201 trace.file = LOCATE_abstractmetamodel;
1202 /* Register variable[0]: Local variable */
1203 variable[0] = self;
1204 /* Register variable[1]: Local variable */
1205 variable[1] = param0;
1206 /* Register variable[2]: Method return value and escape marker */
1207 /* Register variable[3]: Result */
1208 variable[3] = CALL_abstractmetamodel___MMLocalClass___global(variable[0])(variable[0]) /*MMLocalClass::global*/;
1209 /* Register variable[3]: Result */
1210 variable[3] = CALL_abstractmetamodel___MMModule_____bra( variable[1] /*m*/)( variable[1] /*m*/, variable[3]) /*MMModule::[]*/;
1211 variable[2] = variable[3];
1212 goto return_label31;
1213 return_label31: while(false);
1214 tracehead = trace.prev;
1215 return variable[2];
1216 }
1217 void abstractmetamodel___MMLocalClass___new_global(val_t self) {
1218 struct trace_t trace = {NULL, NULL, 389, LOCATE_abstractmetamodel___MMLocalClass___new_global};
1219 val_t variable[5];
1220 struct WBT_ **closurevariable = NULL;
1221 trace.prev = tracehead; tracehead = &trace;
1222 trace.file = LOCATE_abstractmetamodel;
1223 /* Register variable[0]: Local variable */
1224 variable[0] = self;
1225 /* Register variable[1]: Method return value and escape marker */
1226 /* Register variable[2]: Local variable */
1227 /* Register variable[3]: Result */
1228 variable[3] = NEW_MMGlobalClass_abstractmetamodel___MMGlobalClass___init(variable[0]) /*new MMGlobalClass*/;
1229 variable[2] = variable[3];
1230 /* Register variable[3]: Result */
1231 variable[3] = ATTR_abstractmetamodel___MMLocalClass____module(variable[0]) /*MMLocalClass::_module*/;
1232 /* Register variable[3]: Result */
1233 variable[3] = ATTR_abstractmetamodel___MMModule____global_classes(variable[3]) /*MMModule::_global_classes*/;
1234 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[2] /*g*/) /*AbstractArray::add*/;
1235 /* Register variable[3]: Result */
1236 variable[3] = ATTR_abstractmetamodel___MMLocalClass____module(variable[0]) /*MMLocalClass::_module*/;
1237 /* Register variable[3]: Result */
1238 variable[3] = ATTR_abstractmetamodel___MMModule____global_class_by_name(variable[3]) /*MMModule::_global_class_by_name*/;
1239 /* Register variable[4]: Result */
1240 variable[4] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
1241 CALL_abstract_collection___Map_____braeq(variable[3])(variable[3], variable[4], variable[2] /*g*/) /*Map::[]=*/;
1242 CALL_abstractmetamodel___MMLocalClass___set_global(variable[0])(variable[0], variable[2] /*g*/) /*MMLocalClass::set_global*/;
1243 return_label32: while(false);
1244 tracehead = trace.prev;
1245 return;
1246 }
1247 void abstractmetamodel___MMLocalClass___set_global(val_t self, val_t param0) {
1248 struct trace_t trace = {NULL, NULL, 398, LOCATE_abstractmetamodel___MMLocalClass___set_global};
1249 val_t variable[4];
1250 struct WBT_ **closurevariable = NULL;
1251 trace.prev = tracehead; tracehead = &trace;
1252 trace.file = LOCATE_abstractmetamodel;
1253 /* Register variable[0]: Local variable */
1254 variable[0] = self;
1255 /* Register variable[1]: Local variable */
1256 variable[1] = param0;
1257 /* Register variable[2]: Method return value and escape marker */
1258 /* Register variable[3]: Result */
1259 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*g*/ == NIT_NULL /*null*/) || (( variable[1] /*g*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*g*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*g*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*g*/)( variable[1] /*g*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1260 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMLocalClass___set_global, LOCATE_abstractmetamodel, 403); nit_exit(1);}
1261 ATTR_abstractmetamodel___MMLocalClass____global(variable[0]) /*MMLocalClass::_global*/ = variable[1] /*g*/;
1262 /* Register variable[3]: Result */
1263 variable[3] = ATTR_abstractmetamodel___MMLocalClass____global(variable[0]) /*MMLocalClass::_global*/;
1264 CALL_abstractmetamodel___MMGlobalClass___register_local_class(variable[3])(variable[3], variable[0]) /*MMGlobalClass::register_local_class*/;
1265 /* Register variable[3]: Result */
1266 variable[3] = ATTR_abstractmetamodel___MMLocalClass____module(variable[0]) /*MMLocalClass::_module*/;
1267 CALL_abstractmetamodel___MMModule___register_global_class(variable[3])(variable[3], variable[0]) /*MMModule::register_global_class*/;
1268 return_label33: while(false);
1269 tracehead = trace.prev;
1270 return;
1271 }
1272 val_t abstractmetamodel___MMLocalClass___has_global_property_by_name(val_t self, val_t param0) {
1273 struct trace_t trace = {NULL, NULL, 409, LOCATE_abstractmetamodel___MMLocalClass___has_global_property_by_name};
1274 val_t variable[4];
1275 struct WBT_ **closurevariable = NULL;
1276 trace.prev = tracehead; tracehead = &trace;
1277 trace.file = LOCATE_abstractmetamodel;
1278 /* Register variable[0]: Local variable */
1279 variable[0] = self;
1280 /* Register variable[1]: Local variable */
1281 variable[1] = param0;
1282 /* Register variable[2]: Method return value and escape marker */
1283 /* Register variable[3]: Result */
1284 variable[3] = ATTR_abstractmetamodel___MMLocalClass____properties_by_name(variable[0]) /*MMLocalClass::_properties_by_name*/;
1285 /* Register variable[3]: Result */
1286 variable[3] = CALL_abstract_collection___MapRead___has_key(variable[3])(variable[3], variable[1] /*n*/) /*MapRead::has_key*/;
1287 /* Ensure var variable[3]: Left 'and' operand*/
1288 if (UNTAG_Bool(variable[3])) { /* and */
1289 /* Register variable[3]: Result */
1290 variable[3] = ATTR_abstractmetamodel___MMLocalClass____properties_by_name(variable[0]) /*MMLocalClass::_properties_by_name*/;
1291 /* Register variable[3]: Result */
1292 variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[1] /*n*/) /*MapRead::[]*/;
1293 /* Register variable[3]: Result */
1294 variable[3] = CALL_abstract_collection___Collection___length(variable[3])(variable[3]) /*AbstractArrayRead::length*/;
1295 /* Register variable[3]: Result */
1296 variable[3] = TAG_Bool((variable[3])==( TAG_Int(1)));
1297 }
1298 /* Register variable[3]: Result */
1299 variable[2] = variable[3];
1300 goto return_label34;
1301 return_label34: while(false);
1302 tracehead = trace.prev;
1303 return variable[2];
1304 }
1305 val_t abstractmetamodel___MMLocalClass___get_property_by_name(val_t self, val_t param0) {
1306 struct trace_t trace = {NULL, NULL, 416, LOCATE_abstractmetamodel___MMLocalClass___get_property_by_name};
1307 val_t variable[5];
1308 struct WBT_ **closurevariable = NULL;
1309 trace.prev = tracehead; tracehead = &trace;
1310 trace.file = LOCATE_abstractmetamodel;
1311 /* Register variable[0]: Local variable */
1312 variable[0] = self;
1313 /* Register variable[1]: Local variable */
1314 variable[1] = param0;
1315 /* Register variable[2]: Method return value and escape marker */
1316 /* Register variable[3]: Result */
1317 variable[3] = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(variable[0])(variable[0], variable[1] /*n*/) /*MMLocalClass::has_global_property_by_name*/;
1318 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
1319 fprintf(stderr, "Aborted"); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMLocalClass___get_property_by_name, LOCATE_abstractmetamodel, 420); nit_exit(1);
1320 }
1321 /* Register variable[3]: Local variable */
1322 /* Register variable[4]: Result */
1323 variable[4] = ATTR_abstractmetamodel___MMLocalClass____properties_by_name(variable[0]) /*MMLocalClass::_properties_by_name*/;
1324 /* Register variable[4]: Result */
1325 variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4], variable[1] /*n*/) /*MapRead::[]*/;
1326 variable[3] = variable[4];
1327 /* Register variable[4]: Result */
1328 variable[4] = CALL_abstract_collection___Collection___first( variable[3] /*props*/)( variable[3] /*props*/) /*IndexedCollectionRead::first*/;
1329 variable[2] = variable[4];
1330 goto return_label35;
1331 return_label35: while(false);
1332 tracehead = trace.prev;
1333 return variable[2];
1334 }
1335 val_t abstractmetamodel___MMLocalClass___attribute(val_t self, val_t param0) {
1336 struct trace_t trace = {NULL, NULL, 425, LOCATE_abstractmetamodel___MMLocalClass___attribute};
1337 val_t variable[4];
1338 struct WBT_ **closurevariable = NULL;
1339 trace.prev = tracehead; tracehead = &trace;
1340 trace.file = LOCATE_abstractmetamodel;
1341 /* Register variable[0]: Local variable */
1342 variable[0] = self;
1343 /* Register variable[1]: Local variable */
1344 variable[1] = param0;
1345 /* Register variable[2]: Method return value and escape marker */
1346 /* Register variable[3]: Result */
1347 variable[3] = CALL_abstractmetamodel___MMLocalClass___get_property_by_name(variable[0])(variable[0], variable[1] /*a*/) /*MMLocalClass::get_property_by_name*/;
1348 variable[2] = variable[3];
1349 goto return_label36;
1350 return_label36: while(false);
1351 tracehead = trace.prev;
1352 return variable[2];
1353 }
1354 val_t abstractmetamodel___MMLocalClass___method(val_t self, val_t param0) {
1355 struct trace_t trace = {NULL, NULL, 432, LOCATE_abstractmetamodel___MMLocalClass___method};
1356 val_t variable[4];
1357 struct WBT_ **closurevariable = NULL;
1358 trace.prev = tracehead; tracehead = &trace;
1359 trace.file = LOCATE_abstractmetamodel;
1360 /* Register variable[0]: Local variable */
1361 variable[0] = self;
1362 /* Register variable[1]: Local variable */
1363 variable[1] = param0;
1364 /* Register variable[2]: Method return value and escape marker */
1365 /* Register variable[3]: Result */
1366 variable[3] = ATTR_abstractmetamodel___MMLocalClass____properties_by_name(variable[0]) /*MMLocalClass::_properties_by_name*/;
1367 /* Register variable[3]: Result */
1368 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::==*/)))))));
1369 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMLocalClass___method, LOCATE_abstractmetamodel, 436); nit_exit(1);}
1370 /* Register variable[3]: Result */
1371 variable[3] = ATTR_abstractmetamodel___MMLocalClass____properties_by_name(variable[0]) /*MMLocalClass::_properties_by_name*/;
1372 /* Register variable[3]: Result */
1373 variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[1] /*na*/) /*MapRead::[]*/;
1374 /* Register variable[3]: Result */
1375 variable[3] = CALL_abstract_collection___Collection___first(variable[3])(variable[3]) /*IndexedCollectionRead::first*/;
1376 variable[2] = variable[3];
1377 goto return_label37;
1378 return_label37: while(false);
1379 tracehead = trace.prev;
1380 return variable[2];
1381 }
1382 val_t abstractmetamodel___MMLocalClass___select_method(val_t self, val_t param0) {
1383 struct trace_t trace = {NULL, NULL, 440, LOCATE_abstractmetamodel___MMLocalClass___select_method};
1384 val_t variable[6];
1385 struct WBT_ **closurevariable = NULL;
1386 trace.prev = tracehead; tracehead = &trace;
1387 trace.file = LOCATE_abstractmetamodel;
1388 /* Register variable[0]: Local variable */
1389 variable[0] = self;
1390 /* Register variable[1]: Local variable */
1391 variable[1] = param0;
1392 /* Register variable[2]: Method return value and escape marker */
1393 /* Register variable[3]: Result */
1394 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*name*/ == NIT_NULL /*null*/) || (( variable[1] /*name*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*name*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*name*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*name*/)( variable[1] /*name*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1395 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMLocalClass___select_method, LOCATE_abstractmetamodel, 444); nit_exit(1);}
1396 /* Register variable[3]: Local variable */
1397 /* Register variable[4]: Result */
1398 variable[4] = CALL_abstractmetamodel___MMLocalClass___method(variable[0])(variable[0], variable[1] /*name*/) /*MMLocalClass::method*/;
1399 variable[3] = variable[4];
1400 /* Register variable[4]: Local variable */
1401 /* Register variable[5]: Result */
1402 variable[5] = CALL_abstractmetamodel___MMLocalClass_____bra(variable[0])(variable[0], variable[3] /*gp*/) /*MMLocalClass::[]*/;
1403 variable[4] = variable[5];
1404 /* Register variable[5]: Result */
1405 variable[5] = TAG_Bool(( variable[4] /*res*/==NIT_NULL) || VAL_ISA( variable[4] /*res*/, COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
1406 if (!UNTAG_Bool(variable[5])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMLocalClass___select_method, LOCATE_abstractmetamodel, 447); nit_exit(1);}
1407 variable[2] = variable[4] /*res*/;
1408 goto return_label38;
1409 return_label38: while(false);
1410 tracehead = trace.prev;
1411 return variable[2];
1412 }
1413 val_t abstractmetamodel___MMLocalClass___select_attribute(val_t self, val_t param0) {
1414 struct trace_t trace = {NULL, NULL, 451, LOCATE_abstractmetamodel___MMLocalClass___select_attribute};
1415 val_t variable[6];
1416 struct WBT_ **closurevariable = NULL;
1417 trace.prev = tracehead; tracehead = &trace;
1418 trace.file = LOCATE_abstractmetamodel;
1419 /* Register variable[0]: Local variable */
1420 variable[0] = self;
1421 /* Register variable[1]: Local variable */
1422 variable[1] = param0;
1423 /* Register variable[2]: Method return value and escape marker */
1424 /* Register variable[3]: Result */
1425 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*name*/ == NIT_NULL /*null*/) || (( variable[1] /*name*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*name*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*name*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*name*/)( variable[1] /*name*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1426 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMLocalClass___select_attribute, LOCATE_abstractmetamodel, 455); nit_exit(1);}
1427 /* Register variable[3]: Local variable */
1428 /* Register variable[4]: Result */
1429 variable[4] = CALL_abstractmetamodel___MMLocalClass___attribute(variable[0])(variable[0], variable[1] /*name*/) /*MMLocalClass::attribute*/;
1430 variable[3] = variable[4];
1431 /* Register variable[4]: Local variable */
1432 /* Register variable[5]: Result */
1433 variable[5] = CALL_abstractmetamodel___MMLocalClass_____bra(variable[0])(variable[0], variable[3] /*gp*/) /*MMLocalClass::[]*/;
1434 variable[4] = variable[5];
1435 /* Register variable[5]: Result */
1436 variable[5] = TAG_Bool(( variable[4] /*res*/==NIT_NULL) || VAL_ISA( variable[4] /*res*/, COLOR_MMAttribute, ID_MMAttribute)) /*cast MMAttribute*/;
1437 if (!UNTAG_Bool(variable[5])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMLocalClass___select_attribute, LOCATE_abstractmetamodel, 458); nit_exit(1);}
1438 variable[2] = variable[4] /*res*/;
1439 goto return_label39;
1440 return_label39: while(false);
1441 tracehead = trace.prev;
1442 return variable[2];
1443 }
1444 val_t abstractmetamodel___MMLocalClass___super_methods_named(val_t self, val_t param0) {
1445 struct trace_t trace = {NULL, NULL, 462, LOCATE_abstractmetamodel___MMLocalClass___super_methods_named};
1446 val_t variable[10];
1447 struct WBT_ **closurevariable = NULL;
1448 trace.prev = tracehead; tracehead = &trace;
1449 trace.file = LOCATE_abstractmetamodel;
1450 /* Register variable[0]: Local variable */
1451 variable[0] = self;
1452 /* Register variable[1]: Local variable */
1453 variable[1] = param0;
1454 /* Register variable[2]: Method return value and escape marker */
1455 /* Register variable[3]: Local variable */
1456 /* Register variable[4]: Result */
1457 variable[4] = NEW_Array_array___Array___init() /*new Array[MMLocalClass]*/;
1458 variable[3] = variable[4];
1459 /* Register variable[4]: Result */
1460 variable[4] = CALL_abstractmetamodel___MMLocalClass___cshe(variable[0])(variable[0]) /*MMLocalClass::cshe*/;
1461 /* Register variable[4]: Result */
1462 variable[4] = CALL_partial_order___PartialOrderElement___greaters(variable[4])(variable[4]) /*PartialOrderElement::greaters*/;
1463 /* Register variable[4]: For iterator */
1464 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Collection::iterator*/;
1465 while (true) { /*for*/
1466 /* Register variable[5]: For 'is_ok' result */
1467 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
1468 if (!UNTAG_Bool(variable[5])) break; /*for*/
1469 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
1470 /* Register variable[6]: Local variable */
1471 variable[6] = variable[5];
1472 /* Register variable[7]: Result */
1473 variable[7] = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name( variable[6] /*c*/)( variable[6] /*c*/, variable[1] /*n*/) /*MMLocalClass::has_global_property_by_name*/;
1474 if (UNTAG_Bool(variable[7])) { /*if*/
1475 CALL_abstract_collection___SimpleCollection___add( variable[3] /*classes*/)( variable[3] /*classes*/, variable[6] /*c*/) /*AbstractArray::add*/;
1476 }
1477 continue_41: while(0);
1478 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
1479 }
1480 break_41: while(0);
1481 /* Register variable[4]: Result */
1482 variable[4] = CALL_abstractmetamodel___MMLocalClass___cshe(variable[0])(variable[0]) /*MMLocalClass::cshe*/;
1483 /* Register variable[4]: Result */
1484 variable[4] = CALL_partial_order___PartialOrderElement___order(variable[4])(variable[4]) /*PartialOrderElement::order*/;
1485 /* Register variable[4]: Result */
1486 variable[4] = CALL_partial_order___PartialOrder___select_smallests(variable[4])(variable[4], variable[3] /*classes*/) /*PartialOrder::select_smallests*/;
1487 variable[3] = variable[4] /*classes=*/;
1488 /* Register variable[4]: Local variable */
1489 /* Register variable[5]: Result */
1490 variable[5] = NEW_Array_array___Array___init() /*new Array[MMLocalProperty]*/;
1491 variable[4] = variable[5];
1492 /* Register variable[5]: For iterator */
1493 variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*classes*/)( variable[3] /*classes*/) /*AbstractArrayRead::iterator*/;
1494 while (true) { /*for*/
1495 /* Register variable[6]: For 'is_ok' result */
1496 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
1497 if (!UNTAG_Bool(variable[6])) break; /*for*/
1498 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
1499 /* Register variable[7]: Local variable */
1500 variable[7] = variable[6];
1501 /* Register variable[8]: Local variable */
1502 /* Register variable[9]: Result */
1503 variable[9] = CALL_abstractmetamodel___MMLocalClass___method( variable[7] /*c*/)( variable[7] /*c*/, variable[1] /*n*/) /*MMLocalClass::method*/;
1504 variable[8] = variable[9];
1505 /* Register variable[9]: Result */
1506 variable[9] = CALL_abstractmetamodel___MMLocalClass_____bra( variable[7] /*c*/)( variable[7] /*c*/, variable[8] /*g*/) /*MMLocalClass::[]*/;
1507 CALL_abstract_collection___SimpleCollection___add( variable[4] /*res*/)( variable[4] /*res*/, variable[9]) /*AbstractArray::add*/;
1508 continue_42: while(0);
1509 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
1510 }
1511 break_42: while(0);
1512 variable[2] = variable[4] /*res*/;
1513 goto return_label40;
1514 return_label40: while(false);
1515 tracehead = trace.prev;
1516 return variable[2];
1517 }
1518 void abstractmetamodel___MMLocalClass___register_local_property(val_t self, val_t param0) {
1519 struct trace_t trace = {NULL, NULL, 480, LOCATE_abstractmetamodel___MMLocalClass___register_local_property};
1520 val_t variable[5];
1521 struct WBT_ **closurevariable = NULL;
1522 trace.prev = tracehead; tracehead = &trace;
1523 trace.file = LOCATE_abstractmetamodel;
1524 /* Register variable[0]: Local variable */
1525 variable[0] = self;
1526 /* Register variable[1]: Local variable */
1527 variable[1] = param0;
1528 /* Register variable[2]: Method return value and escape marker */
1529 /* Register variable[3]: Result */
1530 variable[3] = CALL_abstractmetamodel___MMLocalProperty___global( variable[1] /*p*/)( variable[1] /*p*/) /*MMLocalProperty::global*/;
1531 /* Register variable[3]: Result */
1532 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::==*/)))))));
1533 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMLocalClass___register_local_property, LOCATE_abstractmetamodel, 483); nit_exit(1);}
1534 /* Register variable[3]: Result */
1535 variable[3] = ATTR_abstractmetamodel___MMLocalClass____local_property_by_global(variable[0]) /*MMLocalClass::_local_property_by_global*/;
1536 /* Register variable[4]: Result */
1537 variable[4] = CALL_abstractmetamodel___MMLocalProperty___global( variable[1] /*p*/)( variable[1] /*p*/) /*MMLocalProperty::global*/;
1538 /* Register variable[3]: Result */
1539 variable[3] = CALL_abstract_collection___MapRead___has_key(variable[3])(variable[3], variable[4]) /*MapRead::has_key*/;
1540 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
1541 /* Register variable[3]: Result */
1542 variable[3] = ATTR_abstractmetamodel___MMLocalClass____local_property_by_global(variable[0]) /*MMLocalClass::_local_property_by_global*/;
1543 /* Register variable[4]: Result */
1544 variable[4] = CALL_abstractmetamodel___MMLocalProperty___global( variable[1] /*p*/)( variable[1] /*p*/) /*MMLocalProperty::global*/;
1545 CALL_abstract_collection___Map_____braeq(variable[3])(variable[3], variable[4], variable[1] /*p*/) /*Map::[]=*/;
1546 }
1547 return_label43: while(false);
1548 tracehead = trace.prev;
1549 return;
1550 }
1551 void abstractmetamodel___MMLocalClass___register_global_property(val_t self, val_t param0) {
1552 struct trace_t trace = {NULL, NULL, 490, LOCATE_abstractmetamodel___MMLocalClass___register_global_property};
1553 val_t variable[7];
1554 struct WBT_ **closurevariable = NULL;
1555 trace.prev = tracehead; tracehead = &trace;
1556 trace.file = LOCATE_abstractmetamodel;
1557 /* Register variable[0]: Local variable */
1558 variable[0] = self;
1559 /* Register variable[1]: Local variable */
1560 variable[1] = param0;
1561 /* Register variable[2]: Method return value and escape marker */
1562 /* Register variable[3]: Local variable */
1563 /* Register variable[4]: Result */
1564 variable[4] = CALL_abstractmetamodel___MMGlobalProperty___intro( variable[1] /*glob*/)( variable[1] /*glob*/) /*MMGlobalProperty::intro*/;
1565 variable[3] = variable[4];
1566 /* Register variable[4]: Local variable */
1567 /* Register variable[5]: Result */
1568 variable[5] = CALL_abstractmetamodel___MMLocalProperty___name( variable[3] /*prop*/)( variable[3] /*prop*/) /*MMLocalProperty::name*/;
1569 variable[4] = variable[5];
1570 /* Register variable[5]: Result */
1571 variable[5] = ATTR_abstractmetamodel___MMLocalClass____properties_by_name(variable[0]) /*MMLocalClass::_properties_by_name*/;
1572 /* Register variable[5]: Result */
1573 variable[5] = CALL_abstract_collection___MapRead___has_key(variable[5])(variable[5], variable[4] /*name*/) /*MapRead::has_key*/;
1574 if (UNTAG_Bool(variable[5])) { /*if*/
1575 /* Register variable[5]: Result */
1576 variable[5] = ATTR_abstractmetamodel___MMLocalClass____properties_by_name(variable[0]) /*MMLocalClass::_properties_by_name*/;
1577 /* Register variable[5]: Result */
1578 variable[5] = CALL_abstract_collection___MapRead_____bra(variable[5])(variable[5], variable[4] /*name*/) /*MapRead::[]*/;
1579 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[1] /*glob*/) /*AbstractArray::add*/;
1580 } else { /*if*/
1581 /* Register variable[5]: Result */
1582 variable[5] = ATTR_abstractmetamodel___MMLocalClass____properties_by_name(variable[0]) /*MMLocalClass::_properties_by_name*/;
1583 variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[MMGlobalProperty]*/ /* Ensure var: Literal array*/;
1584 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[1] /*glob*/) /*AbstractArray::add*/;
1585 /* Register variable[6]: Result */
1586 CALL_abstract_collection___Map_____braeq(variable[5])(variable[5], variable[4] /*name*/, variable[6]) /*Map::[]=*/;
1587 }
1588 /* Register variable[5]: Result */
1589 variable[5] = ATTR_abstractmetamodel___MMLocalClass____global_properties(variable[0]) /*MMLocalClass::_global_properties*/;
1590 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[1] /*glob*/) /*SimpleCollection::add*/;
1591 CALL_abstractmetamodel___MMLocalClass___register_local_property(variable[0])(variable[0], variable[3] /*prop*/) /*MMLocalClass::register_local_property*/;
1592 return_label44: while(false);
1593 tracehead = trace.prev;
1594 return;
1595 }
1596 val_t abstractmetamodel___MMLocalClass___has_global_property(val_t self, val_t param0) {
1597 struct trace_t trace = {NULL, NULL, 504, LOCATE_abstractmetamodel___MMLocalClass___has_global_property};
1598 val_t variable[4];
1599 struct WBT_ **closurevariable = NULL;
1600 trace.prev = tracehead; tracehead = &trace;
1601 trace.file = LOCATE_abstractmetamodel;
1602 /* Register variable[0]: Local variable */
1603 variable[0] = self;
1604 /* Register variable[1]: Local variable */
1605 variable[1] = param0;
1606 /* Register variable[2]: Method return value and escape marker */
1607 /* Register variable[3]: Result */
1608 variable[3] = ATTR_abstractmetamodel___MMLocalClass____global_properties(variable[0]) /*MMLocalClass::_global_properties*/;
1609 /* Register variable[3]: Result */
1610 variable[3] = CALL_abstract_collection___Collection___has(variable[3])(variable[3], variable[1] /*glob*/) /*Collection::has*/;
1611 variable[2] = variable[3];
1612 goto return_label45;
1613 return_label45: while(false);
1614 tracehead = trace.prev;
1615 return variable[2];
1616 }
1617 val_t abstractmetamodel___MMLocalClass_____bra(val_t self, val_t param0) {
1618 struct trace_t trace = {NULL, NULL, 510, LOCATE_abstractmetamodel___MMLocalClass_____bra};
1619 val_t variable[4];
1620 struct WBT_ **closurevariable = NULL;
1621 trace.prev = tracehead; tracehead = &trace;
1622 trace.file = LOCATE_abstractmetamodel;
1623 /* Register variable[0]: Local variable */
1624 variable[0] = self;
1625 /* Register variable[1]: Local variable */
1626 variable[1] = param0;
1627 /* Register variable[2]: Method return value and escape marker */
1628 /* Register variable[3]: Result */
1629 variable[3] = ATTR_abstractmetamodel___MMLocalClass____local_property_by_global(variable[0]) /*MMLocalClass::_local_property_by_global*/;
1630 /* Register variable[3]: Result */
1631 variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[1] /*glob*/) /*MapRead::[]*/;
1632 variable[2] = variable[3];
1633 goto return_label46;
1634 return_label46: while(false);
1635 tracehead = trace.prev;
1636 return variable[2];
1637 }
1638 val_t abstractmetamodel___MMLocalClass___context(val_t self) {
1639 struct trace_t trace = {NULL, NULL, 516, LOCATE_abstractmetamodel___MMLocalClass___context};
1640 val_t variable[3];
1641 struct WBT_ **closurevariable = NULL;
1642 trace.prev = tracehead; tracehead = &trace;
1643 trace.file = LOCATE_abstractmetamodel;
1644 /* Register variable[0]: Local variable */
1645 variable[0] = self;
1646 /* Register variable[1]: Method return value and escape marker */
1647 /* Register variable[2]: Result */
1648 variable[2] = CALL_abstractmetamodel___MMLocalClass___module(variable[0])(variable[0]) /*MMLocalClass::module*/;
1649 /* Register variable[2]: Result */
1650 variable[2] = CALL_abstractmetamodel___MMModule___context(variable[2])(variable[2]) /*MMModule::context*/;
1651 variable[1] = variable[2];
1652 goto return_label47;
1653 return_label47: while(false);
1654 tracehead = trace.prev;
1655 return variable[1];
1656 }
1657 val_t abstractmetamodel___MMGlobalProperty___to_s(val_t self) {
1658 struct trace_t trace = {NULL, NULL, 552, LOCATE_abstractmetamodel___MMGlobalProperty___to_s};
1659 val_t variable[3];
1660 struct WBT_ **closurevariable = NULL;
1661 trace.prev = tracehead; tracehead = &trace;
1662 trace.file = LOCATE_abstractmetamodel;
1663 /* Register variable[0]: Local variable */
1664 variable[0] = self;
1665 /* Register variable[1]: Method return value and escape marker */
1666 /* Register variable[2]: Result */
1667 variable[2] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[0])(variable[0]) /*MMGlobalProperty::intro*/;
1668 /* Register variable[2]: Result */
1669 variable[2] = CALL_abstractmetamodel___MMLocalProperty___full_name(variable[2])(variable[2]) /*MMLocalProperty::full_name*/;
1670 variable[1] = variable[2];
1671 goto return_label48;
1672 return_label48: while(false);
1673 tracehead = trace.prev;
1674 return variable[1];
1675 }
1676 val_t abstractmetamodel___MMGlobalProperty___intro(val_t self) {
1677 struct trace_t trace = {NULL, NULL, 529, LOCATE_abstractmetamodel___MMGlobalProperty___intro};
1678 val_t *variable = NULL;
1679 struct WBT_ **closurevariable = NULL;
1680 trace.prev = tracehead; tracehead = &trace;
1681 trace.file = LOCATE_abstractmetamodel;
1682 tracehead = trace.prev;
1683 return ATTR_abstractmetamodel___MMGlobalProperty____intro( self) /*MMGlobalProperty::_intro*/;
1684 }
1685 val_t abstractmetamodel___MMGlobalProperty___local_class(val_t self) {
1686 struct trace_t trace = {NULL, NULL, 532, LOCATE_abstractmetamodel___MMGlobalProperty___local_class};
1687 val_t variable[3];
1688 struct WBT_ **closurevariable = NULL;
1689 trace.prev = tracehead; tracehead = &trace;
1690 trace.file = LOCATE_abstractmetamodel;
1691 /* Register variable[0]: Local variable */
1692 variable[0] = self;
1693 /* Register variable[1]: Method return value and escape marker */
1694 /* Register variable[2]: Result */
1695 variable[2] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[0])(variable[0]) /*MMGlobalProperty::intro*/;
1696 /* Register variable[2]: Result */
1697 variable[2] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[2])(variable[2]) /*MMLocalProperty::local_class*/;
1698 variable[1] = variable[2];
1699 goto return_label49;
1700 return_label49: while(false);
1701 tracehead = trace.prev;
1702 return variable[1];
1703 }
1704 val_t abstractmetamodel___MMGlobalProperty___property_hierarchy(val_t self) {
1705 struct trace_t trace = {NULL, NULL, 538, LOCATE_abstractmetamodel___MMGlobalProperty___property_hierarchy};
1706 val_t *variable = NULL;
1707 struct WBT_ **closurevariable = NULL;
1708 trace.prev = tracehead; tracehead = &trace;
1709 trace.file = LOCATE_abstractmetamodel;
1710 tracehead = trace.prev;
1711 return ATTR_abstractmetamodel___MMGlobalProperty____property_hierarchy( self) /*MMGlobalProperty::_property_hierarchy*/;
1712 }
1713 void abstractmetamodel___MMGlobalProperty___init(val_t self, val_t param0, int* init_table) {
1714 struct trace_t trace = {NULL, NULL, 541, LOCATE_abstractmetamodel___MMGlobalProperty___init};
1715 val_t variable[4];
1716 struct WBT_ **closurevariable = NULL;
1717 trace.prev = tracehead; tracehead = &trace;
1718 trace.file = LOCATE_abstractmetamodel;
1719 /* Register variable[0]: Local variable */
1720 variable[0] = self;
1721 /* Register variable[1]: Local variable */
1722 variable[1] = param0;
1723 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMGlobalProperty].i]) return;
1724 /* Register variable[2]: Method return value and escape marker */
1725 /* Register variable[3]: Result */
1726 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*p*/ == NIT_NULL /*null*/) || (( variable[1] /*p*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*p*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*p*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*p*/)( variable[1] /*p*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1727 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMGlobalProperty___init, LOCATE_abstractmetamodel, 544); nit_exit(1);}
1728 /* Register variable[3]: Result */
1729 variable[3] = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMLocalProperty]*/;
1730 ATTR_abstractmetamodel___MMGlobalProperty____property_hierarchy(variable[0]) /*MMGlobalProperty::_property_hierarchy*/ = variable[3];
1731 ATTR_abstractmetamodel___MMGlobalProperty____intro(variable[0]) /*MMGlobalProperty::_intro*/ = variable[1] /*p*/;
1732 /* Register variable[3]: Result */
1733 variable[3] = NEW_Array_array___Array___init() /*new Array[MMLocalProperty]*/;
1734 CALL_abstractmetamodel___MMGlobalProperty___add_local_property(variable[0])(variable[0], variable[1] /*p*/, variable[3]) /*MMGlobalProperty::add_local_property*/;
1735 return_label50: while(false);
1736 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMGlobalProperty].i] = 1;
1737 tracehead = trace.prev;
1738 return;
1739 }
1740 void abstractmetamodel___MMGlobalProperty___add_local_property(val_t self, val_t param0, val_t param1) {
1741 struct trace_t trace = {NULL, NULL, 554, LOCATE_abstractmetamodel___MMGlobalProperty___add_local_property};
1742 val_t variable[5];
1743 struct WBT_ **closurevariable = NULL;
1744 trace.prev = tracehead; tracehead = &trace;
1745 trace.file = LOCATE_abstractmetamodel;
1746 /* Register variable[0]: Local variable */
1747 variable[0] = self;
1748 /* Register variable[1]: Local variable */
1749 variable[1] = param0;
1750 /* Register variable[2]: Local variable */
1751 variable[2] = param1;
1752 /* Register variable[3]: Method return value and escape marker */
1753 /* Register variable[4]: Result */
1754 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*i*/ == NIT_NULL /*null*/) || (( variable[1] /*i*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*i*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*i*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*i*/)( variable[1] /*i*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1755 if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMGlobalProperty___add_local_property, LOCATE_abstractmetamodel, 557); nit_exit(1);}
1756 /* Register variable[4]: Result */
1757 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*sup*/ == NIT_NULL /*null*/) || (( variable[2] /*sup*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*sup*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*sup*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*sup*/)( variable[2] /*sup*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1758 if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMGlobalProperty___add_local_property, LOCATE_abstractmetamodel, 558); nit_exit(1);}
1759 /* Register variable[4]: Result */
1760 variable[4] = ATTR_abstractmetamodel___MMGlobalProperty____property_hierarchy(variable[0]) /*MMGlobalProperty::_property_hierarchy*/;
1761 /* Register variable[4]: Result */
1762 variable[4] = CALL_partial_order___PartialOrder___add(variable[4])(variable[4], variable[1] /*i*/, variable[2] /*sup*/) /*PartialOrder::add*/;
1763 ATTR_abstractmetamodel___MMLocalProperty____prhe( variable[1] /*i*/) /*MMLocalProperty::_prhe*/ = variable[4];
1764 return_label51: while(false);
1765 tracehead = trace.prev;
1766 return;
1767 }
1768 val_t abstractmetamodel___MMGlobalProperty___is_attribute(val_t self) {
1769 struct trace_t trace = {NULL, NULL, 562, LOCATE_abstractmetamodel___MMGlobalProperty___is_attribute};
1770 val_t variable[3];
1771 struct WBT_ **closurevariable = NULL;
1772 trace.prev = tracehead; tracehead = &trace;
1773 trace.file = LOCATE_abstractmetamodel;
1774 /* Register variable[0]: Local variable */
1775 variable[0] = self;
1776 /* Register variable[1]: Method return value and escape marker */
1777 /* Register variable[2]: Result */
1778 variable[2] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[0])(variable[0]) /*MMGlobalProperty::intro*/;
1779 /* Register variable[2]: Result */
1780 variable[2] = TAG_Bool((variable[2]==NIT_NULL) || VAL_ISA(variable[2], COLOR_MMAttribute, ID_MMAttribute)) /*cast MMAttribute*/;
1781 variable[1] = variable[2];
1782 goto return_label52;
1783 return_label52: while(false);
1784 tracehead = trace.prev;
1785 return variable[1];
1786 }
1787 val_t abstractmetamodel___MMGlobalProperty___is_method(val_t self) {
1788 struct trace_t trace = {NULL, NULL, 565, LOCATE_abstractmetamodel___MMGlobalProperty___is_method};
1789 val_t variable[3];
1790 struct WBT_ **closurevariable = NULL;
1791 trace.prev = tracehead; tracehead = &trace;
1792 trace.file = LOCATE_abstractmetamodel;
1793 /* Register variable[0]: Local variable */
1794 variable[0] = self;
1795 /* Register variable[1]: Method return value and escape marker */
1796 /* Register variable[2]: Result */
1797 variable[2] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[0])(variable[0]) /*MMGlobalProperty::intro*/;
1798 /* Register variable[2]: Result */
1799 variable[2] = TAG_Bool((variable[2]==NIT_NULL) || VAL_ISA(variable[2], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
1800 variable[1] = variable[2];
1801 goto return_label53;
1802 return_label53: while(false);
1803 tracehead = trace.prev;
1804 return variable[1];
1805 }
1806 val_t abstractmetamodel___MMGlobalProperty___is_init(val_t self) {
1807 struct trace_t trace = {NULL, NULL, 568, LOCATE_abstractmetamodel___MMGlobalProperty___is_init};
1808 val_t *variable = NULL;
1809 struct WBT_ **closurevariable = NULL;
1810 trace.prev = tracehead; tracehead = &trace;
1811 trace.file = LOCATE_abstractmetamodel;
1812 tracehead = trace.prev;
1813 return ATTR_abstractmetamodel___MMGlobalProperty____is_init( self) /*MMGlobalProperty::_is_init*/;
1814 }
1815 void abstractmetamodel___MMGlobalProperty___is_init__eq(val_t self, val_t param0) {
1816 struct trace_t trace = {NULL, NULL, 568, LOCATE_abstractmetamodel___MMGlobalProperty___is_init__eq};
1817 val_t *variable = NULL;
1818 struct WBT_ **closurevariable = NULL;
1819 trace.prev = tracehead; tracehead = &trace;
1820 trace.file = LOCATE_abstractmetamodel;
1821 ATTR_abstractmetamodel___MMGlobalProperty____is_init( self) /*MMGlobalProperty::_is_init*/ = param0;
1822 tracehead = trace.prev;
1823 return;
1824 }
1825 val_t abstractmetamodel___MMGlobalProperty___is_init_for(val_t self, val_t param0) {
1826 struct trace_t trace = {NULL, NULL, 571, LOCATE_abstractmetamodel___MMGlobalProperty___is_init_for};
1827 val_t variable[7];
1828 struct WBT_ **closurevariable = NULL;
1829 trace.prev = tracehead; tracehead = &trace;
1830 trace.file = LOCATE_abstractmetamodel;
1831 /* Register variable[0]: Local variable */
1832 variable[0] = self;
1833 /* Register variable[1]: Local variable */
1834 variable[1] = param0;
1835 /* Register variable[2]: Method return value and escape marker */
1836 /* Register variable[3]: Result */
1837 variable[3] = CALL_abstractmetamodel___MMGlobalProperty___is_init(variable[0])(variable[0]) /*MMGlobalProperty::is_init*/;
1838 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
1839 variable[2] = TAG_Bool(false);
1840 goto return_label54;
1841 }
1842 /* Register variable[3]: Local variable */
1843 /* Register variable[4]: Result */
1844 variable[4] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[0])(variable[0]) /*MMGlobalProperty::intro*/;
1845 /* Register variable[4]: Result */
1846 variable[4] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[4])(variable[4]) /*MMLocalProperty::local_class*/;
1847 variable[3] = variable[4];
1848 /* Register variable[4]: Local variable */
1849 /* Register variable[5]: Result */
1850 variable[5] = CALL_abstractmetamodel___MMLocalClass___che( variable[1] /*c*/)( variable[1] /*c*/) /*MMLocalClass::che*/;
1851 /* Register variable[5]: Result */
1852 variable[5] = CALL_partial_order___PartialOrderElement_____leq(variable[5])(variable[5], variable[3] /*sc*/) /*PartialOrderElement::<=*/;
1853 /* Ensure var variable[5]: Left 'and' operand*/
1854 if (UNTAG_Bool(variable[5])) { /* and */
1855 /* Register variable[5]: Result */
1856 variable[5] = CALL_abstractmetamodel___MMLocalClass___global( variable[1] /*c*/)( variable[1] /*c*/) /*MMLocalClass::global*/;
1857 /* Register variable[5]: Result */
1858 variable[5] = CALL_abstractmetamodel___MMGlobalClass___mixin_of(variable[5])(variable[5]) /*MMGlobalClass::mixin_of*/;
1859 /* Register variable[6]: Result */
1860 variable[6] = CALL_abstractmetamodel___MMLocalClass___global( variable[3] /*sc*/)( variable[3] /*sc*/) /*MMLocalClass::global*/;
1861 /* Register variable[6]: Result */
1862 variable[6] = CALL_abstractmetamodel___MMGlobalClass___mixin_of(variable[6])(variable[6]) /*MMGlobalClass::mixin_of*/;
1863 /* Register variable[5]: Result */
1864 variable[5] = TAG_Bool((variable[5] == variable[6]) || ((variable[5] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[5])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[5],variable[6])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[5])(variable[5], variable[6]) /*Object::==*/)))));
1865 }
1866 /* Register variable[5]: Result */
1867 variable[4] = variable[5];
1868 variable[2] = variable[4] /*res*/;
1869 goto return_label54;
1870 return_label54: while(false);
1871 tracehead = trace.prev;
1872 return variable[2];
1873 }
1874 val_t abstractmetamodel___MMGlobalProperty___visibility_level(val_t self) {
1875 struct trace_t trace = {NULL, NULL, 580, LOCATE_abstractmetamodel___MMGlobalProperty___visibility_level};
1876 val_t *variable = NULL;
1877 struct WBT_ **closurevariable = NULL;
1878 trace.prev = tracehead; tracehead = &trace;
1879 trace.file = LOCATE_abstractmetamodel;
1880 tracehead = trace.prev;
1881 return ATTR_abstractmetamodel___MMGlobalProperty____visibility_level( self) /*MMGlobalProperty::_visibility_level*/;
1882 }
1883 void abstractmetamodel___MMGlobalProperty___visibility_level__eq(val_t self, val_t param0) {
1884 struct trace_t trace = {NULL, NULL, 580, LOCATE_abstractmetamodel___MMGlobalProperty___visibility_level__eq};
1885 val_t *variable = NULL;
1886 struct WBT_ **closurevariable = NULL;
1887 trace.prev = tracehead; tracehead = &trace;
1888 trace.file = LOCATE_abstractmetamodel;
1889 ATTR_abstractmetamodel___MMGlobalProperty____visibility_level( self) /*MMGlobalProperty::_visibility_level*/ = param0;
1890 tracehead = trace.prev;
1891 return;
1892 }
1893 val_t abstractmetamodel___MMLocalProperty___to_s(val_t self) {
1894 struct trace_t trace = {NULL, NULL, 632, LOCATE_abstractmetamodel___MMLocalProperty___to_s};
1895 val_t variable[3];
1896 struct WBT_ **closurevariable = NULL;
1897 trace.prev = tracehead; tracehead = &trace;
1898 trace.file = LOCATE_abstractmetamodel;
1899 /* Register variable[0]: Local variable */
1900 variable[0] = self;
1901 /* Register variable[1]: Method return value and escape marker */
1902 /* Register variable[2]: Result */
1903 variable[2] = CALL_abstractmetamodel___MMLocalProperty___name(variable[0])(variable[0]) /*MMLocalProperty::name*/;
1904 /* Register variable[2]: Result */
1905 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Symbol::to_s*/;
1906 variable[1] = variable[2];
1907 goto return_label55;
1908 return_label55: while(false);
1909 tracehead = trace.prev;
1910 return variable[1];
1911 }
1912 val_t abstractmetamodel___MMLocalProperty___name(val_t self) {
1913 struct trace_t trace = {NULL, NULL, 589, LOCATE_abstractmetamodel___MMLocalProperty___name};
1914 val_t *variable = NULL;
1915 struct WBT_ **closurevariable = NULL;
1916 trace.prev = tracehead; tracehead = &trace;
1917 trace.file = LOCATE_abstractmetamodel;
1918 tracehead = trace.prev;
1919 return ATTR_abstractmetamodel___MMLocalProperty____name( self) /*MMLocalProperty::_name*/;
1920 }
1921 val_t abstractmetamodel___MMLocalProperty___local_class(val_t self) {
1922 struct trace_t trace = {NULL, NULL, 592, LOCATE_abstractmetamodel___MMLocalProperty___local_class};
1923 val_t *variable = NULL;
1924 struct WBT_ **closurevariable = NULL;
1925 trace.prev = tracehead; tracehead = &trace;
1926 trace.file = LOCATE_abstractmetamodel;
1927 tracehead = trace.prev;
1928 return ATTR_abstractmetamodel___MMLocalProperty____local_class( self) /*MMLocalProperty::_local_class*/;
1929 }
1930 val_t abstractmetamodel___MMLocalProperty___global(val_t self) {
1931 struct trace_t trace = {NULL, NULL, 595, LOCATE_abstractmetamodel___MMLocalProperty___global};
1932 val_t *variable = NULL;
1933 struct WBT_ **closurevariable = NULL;
1934 trace.prev = tracehead; tracehead = &trace;
1935 trace.file = LOCATE_abstractmetamodel;
1936 tracehead = trace.prev;
1937 return ATTR_abstractmetamodel___MMLocalProperty____global( self) /*MMLocalProperty::_global*/;
1938 }
1939 val_t abstractmetamodel___MMLocalProperty___prhe(val_t self) {
1940 struct trace_t trace = {NULL, NULL, 598, LOCATE_abstractmetamodel___MMLocalProperty___prhe};
1941 val_t *variable = NULL;
1942 struct WBT_ **closurevariable = NULL;
1943 trace.prev = tracehead; tracehead = &trace;
1944 trace.file = LOCATE_abstractmetamodel;
1945 tracehead = trace.prev;
1946 return ATTR_abstractmetamodel___MMLocalProperty____prhe( self) /*MMLocalProperty::_prhe*/;
1947 }
1948 val_t abstractmetamodel___MMLocalProperty___module(val_t self) {
1949 struct trace_t trace = {NULL, NULL, 601, LOCATE_abstractmetamodel___MMLocalProperty___module};
1950 val_t variable[3];
1951 struct WBT_ **closurevariable = NULL;
1952 trace.prev = tracehead; tracehead = &trace;
1953 trace.file = LOCATE_abstractmetamodel;
1954 /* Register variable[0]: Local variable */
1955 variable[0] = self;
1956 /* Register variable[1]: Method return value and escape marker */
1957 /* Register variable[2]: Result */
1958 variable[2] = ATTR_abstractmetamodel___MMLocalProperty____local_class(variable[0]) /*MMLocalProperty::_local_class*/;
1959 /* Register variable[2]: Result */
1960 variable[2] = CALL_abstractmetamodel___MMLocalClass___module(variable[2])(variable[2]) /*MMLocalClass::module*/;
1961 variable[1] = variable[2];
1962 goto return_label56;
1963 return_label56: while(false);
1964 tracehead = trace.prev;
1965 return variable[1];
1966 }
1967 val_t abstractmetamodel___MMLocalProperty___full_name(val_t self) {
1968 struct trace_t trace = {NULL, NULL, 604, LOCATE_abstractmetamodel___MMLocalProperty___full_name};
1969 static val_t once_value_58 = NIT_NULL; /* Once value for string variable[3]*/
1970 static val_t once_value_59 = NIT_NULL; /* Once value for string variable[3]*/
1971 static val_t once_value_60 = NIT_NULL; /* Once value for string variable[3]*/
1972 static val_t once_value_61 = NIT_NULL; /* Once value for string variable[3]*/
1973 static val_t once_value_62 = NIT_NULL; /* Once value for string variable[3]*/
1974 static val_t once_value_63 = NIT_NULL; /* Once value for string variable[3]*/
1975 static val_t once_value_64 = NIT_NULL; /* Once value for string variable[3]*/
1976 static val_t once_value_65 = NIT_NULL; /* Once value for string variable[3]*/
1977 static val_t once_value_66 = NIT_NULL; /* Once value for string variable[3]*/
1978 static val_t once_value_67 = NIT_NULL; /* Once value for string variable[3]*/
1979 static val_t once_value_68 = NIT_NULL; /* Once value for string variable[3]*/
1980 static val_t once_value_69 = NIT_NULL; /* Once value for string variable[3]*/
1981 val_t variable[4];
1982 struct WBT_ **closurevariable = NULL;
1983 trace.prev = tracehead; tracehead = &trace;
1984 trace.file = LOCATE_abstractmetamodel;
1985 /* Register variable[0]: Local variable */
1986 variable[0] = self;
1987 /* Register variable[1]: Method return value and escape marker */
1988 /* Register variable[2]: Result */
1989 variable[2] = CALL_abstractmetamodel___MMLocalProperty___global(variable[0])(variable[0]) /*MMLocalProperty::global*/;
1990 /* Register variable[2]: Result */
1991 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::==*/)))));
1992 if (UNTAG_Bool(variable[2])) { /*if*/
1993 variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
1994 /* Register variable[3]: Once String constant */
1995 if (once_value_58 != NIT_NULL) variable[3] = once_value_58;
1996 else {
1997 variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
1998 once_value_58 = variable[3];
1999 }
2000 /* Register variable[3]: Result */
2001 /* Ensure var variable[3]: super-string element*/
2002 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2003 /* Register variable[3]: Result */
2004 variable[3] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[0])(variable[0]) /*MMLocalProperty::local_class*/;
2005 /* Register variable[3]: Result */
2006 variable[3] = CALL_abstractmetamodel___MMLocalClass___module(variable[3])(variable[3]) /*MMLocalClass::module*/;
2007 /* Ensure var variable[3]: super-string element*/
2008 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/) /*AbstractArray::add*/;
2009 /* Register variable[3]: Once String constant */
2010 if (once_value_59 != NIT_NULL) variable[3] = once_value_59;
2011 else {
2012 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
2013 once_value_59 = variable[3];
2014 }
2015 /* Register variable[3]: Result */
2016 /* Ensure var variable[3]: super-string element*/
2017 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2018 /* Register variable[3]: Result */
2019 variable[3] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[0])(variable[0]) /*MMLocalProperty::local_class*/;
2020 /* Ensure var variable[3]: super-string element*/
2021 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/) /*AbstractArray::add*/;
2022 /* Register variable[3]: Once String constant */
2023 if (once_value_60 != NIT_NULL) variable[3] = once_value_60;
2024 else {
2025 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("::(?::"), TAG_Int(6)) /*new String*/;
2026 once_value_60 = variable[3];
2027 }
2028 /* Register variable[3]: Result */
2029 /* Ensure var variable[3]: super-string element*/
2030 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2031 /* Register variable[3]: Result */
2032 variable[3] = CALL_abstractmetamodel___MMLocalProperty___name(variable[0])(variable[0]) /*MMLocalProperty::name*/;
2033 /* Ensure var variable[3]: super-string element*/
2034 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/) /*AbstractArray::add*/;
2035 /* Register variable[3]: Once String constant */
2036 if (once_value_61 != NIT_NULL) variable[3] = once_value_61;
2037 else {
2038 variable[3] = NEW_String_string___String___with_native(BOX_NativeString(")"), TAG_Int(1)) /*new String*/;
2039 once_value_61 = variable[3];
2040 }
2041 /* Register variable[3]: Result */
2042 /* Ensure var variable[3]: super-string element*/
2043 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2044 /* Register variable[2]: Result */
2045 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Object::to_s*/;
2046 variable[1] = variable[2];
2047 goto return_label57;
2048 } else { /*if*/
2049 /* Register variable[2]: Result */
2050 variable[2] = CALL_abstractmetamodel___MMLocalProperty___global(variable[0])(variable[0]) /*MMLocalProperty::global*/;
2051 /* Register variable[2]: Result */
2052 variable[2] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[2])(variable[2]) /*MMGlobalProperty::intro*/;
2053 /* Register variable[2]: Result */
2054 variable[2] = TAG_Bool((variable[2] == variable[0]) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2],variable[0])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], variable[0]) /*Object::==*/)))));
2055 if (UNTAG_Bool(variable[2])) { /*if*/
2056 variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2057 /* Register variable[3]: Once String constant */
2058 if (once_value_62 != NIT_NULL) variable[3] = once_value_62;
2059 else {
2060 variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
2061 once_value_62 = variable[3];
2062 }
2063 /* Register variable[3]: Result */
2064 /* Ensure var variable[3]: super-string element*/
2065 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2066 /* Register variable[3]: Result */
2067 variable[3] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[0])(variable[0]) /*MMLocalProperty::local_class*/;
2068 /* Register variable[3]: Result */
2069 variable[3] = CALL_abstractmetamodel___MMLocalClass___module(variable[3])(variable[3]) /*MMLocalClass::module*/;
2070 /* Ensure var variable[3]: super-string element*/
2071 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/) /*AbstractArray::add*/;
2072 /* Register variable[3]: Once String constant */
2073 if (once_value_63 != NIT_NULL) variable[3] = once_value_63;
2074 else {
2075 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
2076 once_value_63 = variable[3];
2077 }
2078 /* Register variable[3]: Result */
2079 /* Ensure var variable[3]: super-string element*/
2080 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2081 /* Register variable[3]: Result */
2082 variable[3] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[0])(variable[0]) /*MMLocalProperty::local_class*/;
2083 /* Ensure var variable[3]: super-string element*/
2084 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/) /*AbstractArray::add*/;
2085 /* Register variable[3]: Once String constant */
2086 if (once_value_64 != NIT_NULL) variable[3] = once_value_64;
2087 else {
2088 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
2089 once_value_64 = variable[3];
2090 }
2091 /* Register variable[3]: Result */
2092 /* Ensure var variable[3]: super-string element*/
2093 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2094 /* Register variable[3]: Result */
2095 variable[3] = CALL_abstractmetamodel___MMLocalProperty___name(variable[0])(variable[0]) /*MMLocalProperty::name*/;
2096 /* Ensure var variable[3]: super-string element*/
2097 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/) /*AbstractArray::add*/;
2098 /* Register variable[3]: Once String constant */
2099 if (once_value_65 != NIT_NULL) variable[3] = once_value_65;
2100 else {
2101 variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
2102 once_value_65 = variable[3];
2103 }
2104 /* Register variable[3]: Result */
2105 /* Ensure var variable[3]: super-string element*/
2106 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2107 /* Register variable[2]: Result */
2108 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Object::to_s*/;
2109 variable[1] = variable[2];
2110 goto return_label57;
2111 } else { /*if*/
2112 variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2113 /* Register variable[3]: Once String constant */
2114 if (once_value_66 != NIT_NULL) variable[3] = once_value_66;
2115 else {
2116 variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
2117 once_value_66 = variable[3];
2118 }
2119 /* Register variable[3]: Result */
2120 /* Ensure var variable[3]: super-string element*/
2121 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2122 /* Register variable[3]: Result */
2123 variable[3] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[0])(variable[0]) /*MMLocalProperty::local_class*/;
2124 /* Register variable[3]: Result */
2125 variable[3] = CALL_abstractmetamodel___MMLocalClass___module(variable[3])(variable[3]) /*MMLocalClass::module*/;
2126 /* Ensure var variable[3]: super-string element*/
2127 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/) /*AbstractArray::add*/;
2128 /* Register variable[3]: Once String constant */
2129 if (once_value_67 != NIT_NULL) variable[3] = once_value_67;
2130 else {
2131 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
2132 once_value_67 = variable[3];
2133 }
2134 /* Register variable[3]: Result */
2135 /* Ensure var variable[3]: super-string element*/
2136 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2137 /* Register variable[3]: Result */
2138 variable[3] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[0])(variable[0]) /*MMLocalProperty::local_class*/;
2139 /* Ensure var variable[3]: super-string element*/
2140 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/) /*AbstractArray::add*/;
2141 /* Register variable[3]: Once String constant */
2142 if (once_value_68 != NIT_NULL) variable[3] = once_value_68;
2143 else {
2144 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("::("), TAG_Int(3)) /*new String*/;
2145 once_value_68 = variable[3];
2146 }
2147 /* Register variable[3]: Result */
2148 /* Ensure var variable[3]: super-string element*/
2149 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2150 /* Register variable[3]: Result */
2151 variable[3] = CALL_abstractmetamodel___MMLocalProperty___global(variable[0])(variable[0]) /*MMLocalProperty::global*/;
2152 /* Register variable[3]: Result */
2153 variable[3] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[3])(variable[3]) /*MMGlobalProperty::intro*/;
2154 /* Register variable[3]: Result */
2155 variable[3] = CALL_abstractmetamodel___MMLocalProperty___full_name(variable[3])(variable[3]) /*MMLocalProperty::full_name*/;
2156 /* Ensure var variable[3]: super-string element*/
2157 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2158 /* Register variable[3]: Once String constant */
2159 if (once_value_69 != NIT_NULL) variable[3] = once_value_69;
2160 else {
2161 variable[3] = NEW_String_string___String___with_native(BOX_NativeString(")"), TAG_Int(1)) /*new String*/;
2162 once_value_69 = variable[3];
2163 }
2164 /* Register variable[3]: Result */
2165 /* Ensure var variable[3]: super-string element*/
2166 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
2167 /* Register variable[2]: Result */
2168 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Object::to_s*/;
2169 variable[1] = variable[2];
2170 goto return_label57;
2171 }
2172 }
2173 return_label57: while(false);
2174 tracehead = trace.prev;
2175 return variable[1];
2176 }
2177 void abstractmetamodel___MMLocalProperty___set_global(val_t self, val_t param0) {
2178 struct trace_t trace = {NULL, NULL, 616, LOCATE_abstractmetamodel___MMLocalProperty___set_global};
2179 val_t variable[4];
2180 struct WBT_ **closurevariable = NULL;
2181 trace.prev = tracehead; tracehead = &trace;
2182 trace.file = LOCATE_abstractmetamodel;
2183 /* Register variable[0]: Local variable */
2184 variable[0] = self;
2185 /* Register variable[1]: Local variable */
2186 variable[1] = param0;
2187 /* Register variable[2]: Method return value and escape marker */
2188 /* Register variable[3]: Result */
2189 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*g*/ == NIT_NULL /*null*/) || (( variable[1] /*g*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*g*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*g*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*g*/)( variable[1] /*g*/, NIT_NULL /*null*/) /*Object::==*/)))))));
2190 if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMLocalProperty___set_global, LOCATE_abstractmetamodel, 619); nit_exit(1);}
2191 ATTR_abstractmetamodel___MMLocalProperty____global(variable[0]) /*MMLocalProperty::_global*/ = variable[1] /*g*/;
2192 /* Register variable[3]: Result */
2193 variable[3] = ATTR_abstractmetamodel___MMLocalProperty____local_class(variable[0]) /*MMLocalProperty::_local_class*/;
2194 CALL_abstractmetamodel___MMLocalClass___register_local_property(variable[3])(variable[3], variable[0]) /*MMLocalClass::register_local_property*/;
2195 return_label70: while(false);
2196 tracehead = trace.prev;
2197 return;
2198 }
2199 void abstractmetamodel___MMLocalProperty___new_global(val_t self) {
2200 struct trace_t trace = {NULL, NULL, 624, LOCATE_abstractmetamodel___MMLocalProperty___new_global};
2201 val_t variable[4];
2202 struct WBT_ **closurevariable = NULL;
2203 trace.prev = tracehead; tracehead = &trace;
2204 trace.file = LOCATE_abstractmetamodel;
2205 /* Register variable[0]: Local variable */
2206 variable[0] = self;
2207 /* Register variable[1]: Method return value and escape marker */
2208 /* Register variable[2]: Result */
2209 variable[2] = ATTR_abstractmetamodel___MMLocalProperty____global(variable[0]) /*MMLocalProperty::_global*/;
2210 /* Register variable[2]: Result */
2211 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::==*/)))));
2212 if (!UNTAG_Bool(variable[2])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstractmetamodel___MMLocalProperty___new_global, LOCATE_abstractmetamodel, 627); nit_exit(1);}
2213 /* Register variable[2]: Result */
2214 variable[2] = NEW_MMGlobalProperty_abstractmetamodel___MMGlobalProperty___init(variable[0]) /*new MMGlobalProperty*/;
2215 ATTR_abstractmetamodel___MMLocalProperty____global(variable[0]) /*MMLocalProperty::_global*/ = variable[2];
2216 /* Register variable[2]: Result */
2217 variable[2] = ATTR_abstractmetamodel___MMLocalProperty____local_class(variable[0]) /*MMLocalProperty::_local_class*/;
2218 /* Register variable[3]: Result */
2219 variable[3] = ATTR_abstractmetamodel___MMLocalProperty____global(variable[0]) /*MMLocalProperty::_global*/;
2220 CALL_abstractmetamodel___MMLocalClass___register_global_property(variable[2])(variable[2], variable[3]) /*MMLocalClass::register_global_property*/;
2221 return_label71: while(false);
2222 tracehead = trace.prev;
2223 return;
2224 }
2225 val_t abstractmetamodel___MMLocalProperty___need_super(val_t self) {
2226 struct trace_t trace = {NULL, NULL, 634, LOCATE_abstractmetamodel___MMLocalProperty___need_super};
2227 val_t *variable = NULL;
2228 struct WBT_ **closurevariable = NULL;
2229 trace.prev = tracehead; tracehead = &trace;
2230 trace.file = LOCATE_abstractmetamodel;
2231 tracehead = trace.prev;
2232 return ATTR_abstractmetamodel___MMLocalProperty____need_super( self) /*MMLocalProperty::_need_super*/;
2233 }
2234 void abstractmetamodel___MMLocalProperty___need_super__eq(val_t self, val_t param0) {
2235 struct trace_t trace = {NULL, NULL, 634, LOCATE_abstractmetamodel___MMLocalProperty___need_super__eq};
2236 val_t *variable = NULL;
2237 struct WBT_ **closurevariable = NULL;
2238 trace.prev = tracehead; tracehead = &trace;
2239 trace.file = LOCATE_abstractmetamodel;
2240 ATTR_abstractmetamodel___MMLocalProperty____need_super( self) /*MMLocalProperty::_need_super*/ = param0;
2241 tracehead = trace.prev;
2242 return;
2243 }
2244 void abstractmetamodel___MMLocalProperty___init(val_t self, val_t param0, val_t param1, int* init_table) {
2245 struct trace_t trace = {NULL, NULL, 637, LOCATE_abstractmetamodel___MMLocalProperty___init};
2246 val_t variable[4];
2247 struct WBT_ **closurevariable = NULL;
2248 trace.prev = tracehead; tracehead = &trace;
2249 trace.file = LOCATE_abstractmetamodel;
2250 /* Register variable[0]: Local variable */
2251 variable[0] = self;
2252 /* Register variable[1]: Local variable */
2253 variable[1] = param0;
2254 /* Register variable[2]: Local variable */
2255 variable[2] = param1;
2256 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMLocalProperty].i]) return;
2257 /* Register variable[3]: Method return value and escape marker */
2258 ATTR_abstractmetamodel___MMLocalProperty____name(variable[0]) /*MMLocalProperty::_name*/ = variable[1] /*n*/;
2259 ATTR_abstractmetamodel___MMLocalProperty____local_class(variable[0]) /*MMLocalProperty::_local_class*/ = variable[2] /*bc*/;
2260 return_label72: while(false);
2261 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_MMLocalProperty].i] = 1;
2262 tracehead = trace.prev;
2263 return;
2264 }