First NIT release and new clean mercurial repository v0.1
authorJean Privat <jean@pryen.org>
Wed, 9 Jul 2008 19:55:44 +0000 (15:55 -0400)
committerJean Privat <jean@pryen.org>
Wed, 9 Jul 2008 19:55:44 +0000 (15:55 -0400)
726 files changed:
.hgignore [new file with mode: 0644]
BUGS [new file with mode: 0644]
Changelog [new file with mode: 0644]
LICENSE [new file with mode: 0644]
Makefile [new file with mode: 0644]
NOTICE [new file with mode: 0644]
README [new file with mode: 0644]
TODO [new file with mode: 0644]
bin/gccx [new file with mode: 0755]
c_src/Makefile [new file with mode: 0644]
c_src/README [new file with mode: 0644]
c_src/abstract_collection._sep.c [new file with mode: 0644]
c_src/abstract_collection._sep.h [new file with mode: 0644]
c_src/abstractmetamodel._sep.c [new file with mode: 0644]
c_src/abstractmetamodel._sep.h [new file with mode: 0644]
c_src/abstracttool._sep.c [new file with mode: 0644]
c_src/abstracttool._sep.h [new file with mode: 0644]
c_src/array._sep.c [new file with mode: 0644]
c_src/array._sep.h [new file with mode: 0644]
c_src/compiling._sep.c [new file with mode: 0644]
c_src/compiling._sep.h [new file with mode: 0644]
c_src/compiling_base._sep.c [new file with mode: 0644]
c_src/compiling_base._sep.h [new file with mode: 0644]
c_src/compiling_global._sep.c [new file with mode: 0644]
c_src/compiling_global._sep.h [new file with mode: 0644]
c_src/compiling_methods._sep.c [new file with mode: 0644]
c_src/compiling_methods._sep.h [new file with mode: 0644]
c_src/control_flow._sep.c [new file with mode: 0644]
c_src/control_flow._sep.h [new file with mode: 0644]
c_src/environ._sep.c [new file with mode: 0644]
c_src/environ._sep.h [new file with mode: 0644]
c_src/exec._sep.c [new file with mode: 0644]
c_src/exec._sep.h [new file with mode: 0644]
c_src/file._sep.c [new file with mode: 0644]
c_src/file._sep.h [new file with mode: 0644]
c_src/genericity._sep.c [new file with mode: 0644]
c_src/genericity._sep.h [new file with mode: 0644]
c_src/hash._sep.c [new file with mode: 0644]
c_src/hash._sep.h [new file with mode: 0644]
c_src/inheritance._sep.c [new file with mode: 0644]
c_src/inheritance._sep.h [new file with mode: 0644]
c_src/kernel._sep.c [new file with mode: 0644]
c_src/kernel._sep.h [new file with mode: 0644]
c_src/lexer._sep.c [new file with mode: 0644]
c_src/lexer._sep.h [new file with mode: 0644]
c_src/list._sep.c [new file with mode: 0644]
c_src/list._sep.h [new file with mode: 0644]
c_src/math._sep.c [new file with mode: 0644]
c_src/math._sep.h [new file with mode: 0644]
c_src/metamodel._sep.c [new file with mode: 0644]
c_src/metamodel._sep.h [new file with mode: 0644]
c_src/mmbuilder._sep.c [new file with mode: 0644]
c_src/mmbuilder._sep.h [new file with mode: 0644]
c_src/mmloader._sep.c [new file with mode: 0644]
c_src/mmloader._sep.h [new file with mode: 0644]
c_src/nitc._build.sh [new file with mode: 0644]
c_src/nitc._sep.c [new file with mode: 0644]
c_src/nitc._sep.h [new file with mode: 0644]
c_src/nitc._tables.c [new file with mode: 0644]
c_src/opts._sep.c [new file with mode: 0644]
c_src/opts._sep.h [new file with mode: 0644]
c_src/parser._sep.c [new file with mode: 0644]
c_src/parser._sep.h [new file with mode: 0644]
c_src/parser_nodes._sep.c [new file with mode: 0644]
c_src/parser_nodes._sep.h [new file with mode: 0644]
c_src/parser_prod._sep.c [new file with mode: 0644]
c_src/parser_prod._sep.h [new file with mode: 0644]
c_src/parser_tables._sep.c [new file with mode: 0644]
c_src/parser_tables._sep.h [new file with mode: 0644]
c_src/partial_order._sep.c [new file with mode: 0644]
c_src/partial_order._sep.h [new file with mode: 0644]
c_src/range._sep.c [new file with mode: 0644]
c_src/range._sep.h [new file with mode: 0644]
c_src/sorter._sep.c [new file with mode: 0644]
c_src/sorter._sep.h [new file with mode: 0644]
c_src/standard._sep.c [new file with mode: 0644]
c_src/standard._sep.h [new file with mode: 0644]
c_src/static_type._sep.c [new file with mode: 0644]
c_src/static_type._sep.h [new file with mode: 0644]
c_src/stream._sep.c [new file with mode: 0644]
c_src/stream._sep.h [new file with mode: 0644]
c_src/string._sep.c [new file with mode: 0644]
c_src/string._sep.h [new file with mode: 0644]
c_src/string_search._sep.c [new file with mode: 0644]
c_src/string_search._sep.h [new file with mode: 0644]
c_src/symbol._sep.c [new file with mode: 0644]
c_src/symbol._sep.h [new file with mode: 0644]
c_src/syntax._sep.c [new file with mode: 0644]
c_src/syntax._sep.h [new file with mode: 0644]
c_src/syntax_base._sep.c [new file with mode: 0644]
c_src/syntax_base._sep.h [new file with mode: 0644]
c_src/time._sep.c [new file with mode: 0644]
c_src/time._sep.h [new file with mode: 0644]
c_src/type_formal._sep.c [new file with mode: 0644]
c_src/type_formal._sep.h [new file with mode: 0644]
c_src/typing._sep.c [new file with mode: 0644]
c_src/typing._sep.h [new file with mode: 0644]
c_src/utils._sep.c [new file with mode: 0644]
c_src/utils._sep.h [new file with mode: 0644]
c_src/vararg._sep.c [new file with mode: 0644]
c_src/vararg._sep.h [new file with mode: 0644]
c_src/virtualtype._sep.c [new file with mode: 0644]
c_src/virtualtype._sep.h [new file with mode: 0644]
examples/fibonacci.nit [new file with mode: 0644]
examples/hello_world.nit [new file with mode: 0644]
examples/print_arguments.nit [new file with mode: 0644]
examples/procedural_array.nit [new file with mode: 0644]
examples/various/glob.nit [new file with mode: 0644]
lib/dummy_array.nit [new file with mode: 0644]
lib/filter_stream.nit [new file with mode: 0644]
lib/game.nit [new file with mode: 0644]
lib/nit_common.h [new file with mode: 0644]
lib/nit_main.c [new file with mode: 0644]
lib/opts.nit [new file with mode: 0644]
lib/sdl.nit [new file with mode: 0644]
lib/sdl_nit.c [new file with mode: 0644]
lib/sdl_nit.h [new file with mode: 0644]
lib/standard/abstract_collection.nit [new file with mode: 0644]
lib/standard/array.nit [new file with mode: 0644]
lib/standard/environ.nit [new file with mode: 0644]
lib/standard/environ_nit.h [new file with mode: 0644]
lib/standard/environ_prm.h [new file with mode: 0644]
lib/standard/exec.nit [new file with mode: 0644]
lib/standard/exec_nit.c [new file with mode: 0644]
lib/standard/exec_nit.h [new file with mode: 0644]
lib/standard/file.nit [new file with mode: 0644]
lib/standard/file_nit.c [new file with mode: 0644]
lib/standard/file_nit.h [new file with mode: 0644]
lib/standard/hash.nit [new file with mode: 0644]
lib/standard/kernel.nit [new file with mode: 0644]
lib/standard/list.nit [new file with mode: 0644]
lib/standard/math.nit [new file with mode: 0644]
lib/standard/math_nit.h [new file with mode: 0644]
lib/standard/math_prm.h [new file with mode: 0644]
lib/standard/range.nit [new file with mode: 0644]
lib/standard/sorter.nit [new file with mode: 0644]
lib/standard/standard.nit [new file with mode: 0644]
lib/standard/stream.nit [new file with mode: 0644]
lib/standard/stream_nit.c [new file with mode: 0644]
lib/standard/stream_nit.h [new file with mode: 0644]
lib/standard/string.nit [new file with mode: 0644]
lib/standard/string_nit.h [new file with mode: 0644]
lib/standard/string_search.nit [new file with mode: 0644]
lib/standard/symbol.nit [new file with mode: 0644]
lib/standard/time.nit [new file with mode: 0644]
lib/standard/time_nit.h [new file with mode: 0644]
src/abstracttool.nit [new file with mode: 0644]
src/compiling/compiling.nit [new file with mode: 0644]
src/compiling/compiling_base.nit [new file with mode: 0644]
src/compiling/compiling_global.nit [new file with mode: 0644]
src/compiling/compiling_methods.nit [new file with mode: 0644]
src/metamodel/abstractmetamodel.nit [new file with mode: 0644]
src/metamodel/genericity.nit [new file with mode: 0644]
src/metamodel/inheritance.nit [new file with mode: 0644]
src/metamodel/metamodel.nit [new file with mode: 0644]
src/metamodel/partial_order.nit [new file with mode: 0644]
src/metamodel/static_type.nit [new file with mode: 0644]
src/metamodel/type_formal.nit [new file with mode: 0644]
src/metamodel/vararg.nit [new file with mode: 0644]
src/metamodel/virtualtype.nit [new file with mode: 0644]
src/mmloader.nit [new file with mode: 0644]
src/nc [new file with mode: 0755]
src/nc2 [new symlink]
src/nc3 [new symlink]
src/nc4 [new symlink]
src/nitc.nit [new file with mode: 0644]
src/nitdoc.nit [new file with mode: 0644]
src/parser/Makefile [new file with mode: 0644]
src/parser/README [new file with mode: 0644]
src/parser/lexer.nit [new file with mode: 0644]
src/parser/nit.sablecc3xx [new file with mode: 0644]
src/parser/parser.nit [new file with mode: 0644]
src/parser/parser_abs.nit [new file with mode: 0644]
src/parser/parser_nodes.nit [new file with mode: 0644]
src/parser/parser_prod.nit [new file with mode: 0644]
src/parser/parser_tables.nit [new file with mode: 0644]
src/parser/test_parser.nit [new file with mode: 0644]
src/parser/xss/lexer.xss [new file with mode: 0644]
src/parser/xss/main.xss [new file with mode: 0644]
src/parser/xss/nodes.xss [new file with mode: 0644]
src/parser/xss/parser.xss [new file with mode: 0644]
src/parser/xss/prods.xss [new file with mode: 0644]
src/parser/xss/tokens.xss [new file with mode: 0644]
src/syntax/control_flow.nit [new file with mode: 0644]
src/syntax/mmbuilder.nit [new file with mode: 0644]
src/syntax/syntax.nit [new file with mode: 0644]
src/syntax/syntax_base.nit [new file with mode: 0644]
src/syntax/typing.nit [new file with mode: 0644]
src/utils.nit [new file with mode: 0644]
tests/Makefile [new file with mode: 0644]
tests/README [new file with mode: 0644]
tests/base_abort.nit [new file with mode: 0644]
tests/base_abort.sav [new file with mode: 0644]
tests/base_array.nit [new file with mode: 0644]
tests/base_array.sav [new file with mode: 0644]
tests/base_array_alt1.sav [new file with mode: 0644]
tests/base_attr.nit [new file with mode: 0644]
tests/base_attr.sav [new file with mode: 0644]
tests/base_attr_def.nit [new file with mode: 0644]
tests/base_attr_def.sav [new file with mode: 0644]
tests/base_attr_init_val1.nit [new file with mode: 0644]
tests/base_attr_init_val1.sav [new file with mode: 0644]
tests/base_attr_init_val2.nit [new file with mode: 0644]
tests/base_attr_init_val2.sav [new file with mode: 0644]
tests/base_classid.nit [new file with mode: 0644]
tests/base_classid.sav [new file with mode: 0644]
tests/base_combined_assignment.nit [new file with mode: 0644]
tests/base_combined_assignment.sav [new file with mode: 0644]
tests/base_combined_assignment_alt1.sav [new file with mode: 0644]
tests/base_compile.nit [new file with mode: 0644]
tests/base_compile.sav [new file with mode: 0644]
tests/base_control_flow.nit [new file with mode: 0644]
tests/base_control_flow.sav [new file with mode: 0644]
tests/base_control_flow2.nit [new file with mode: 0644]
tests/base_control_flow2.sav [new file with mode: 0644]
tests/base_empty.nit [new file with mode: 0644]
tests/base_empty.sav [new file with mode: 0644]
tests/base_empty_comments.nit [new file with mode: 0644]
tests/base_empty_comments.sav [new file with mode: 0644]
tests/base_empty_module.nit [new file with mode: 0644]
tests/base_empty_module.sav [new file with mode: 0644]
tests/base_eq.nit [new file with mode: 0644]
tests/base_eq.sav [new file with mode: 0644]
tests/base_eq_int.nit [new file with mode: 0644]
tests/base_eq_int.sav [new file with mode: 0644]
tests/base_eq_int2.nit [new file with mode: 0644]
tests/base_eq_int2.sav [new file with mode: 0644]
tests/base_gen.nit [new file with mode: 0644]
tests/base_gen.sav [new file with mode: 0644]
tests/base_gen_alt1.sav [new file with mode: 0644]
tests/base_gen_f.nit [new file with mode: 0644]
tests/base_gen_f.sav [new file with mode: 0644]
tests/base_gen_int.nit [new file with mode: 0644]
tests/base_gen_int.sav [new file with mode: 0644]
tests/base_gen_int_alt1.sav [new file with mode: 0644]
tests/base_if_expr.nit [new file with mode: 0644]
tests/base_if_expr.sav [new file with mode: 0644]
tests/base_if_expr_alt1.sav [new file with mode: 0644]
tests/base_init_inh.nit [new file with mode: 0644]
tests/base_init_inh.sav [new file with mode: 0644]
tests/base_init_linext.nit [new file with mode: 0644]
tests/base_init_linext.sav [new file with mode: 0644]
tests/base_init_linext2.nit [new file with mode: 0644]
tests/base_init_linext2.sav [new file with mode: 0644]
tests/base_init_linext2_alt1.sav [new file with mode: 0644]
tests/base_init_linext2_alt2.sav [new file with mode: 0644]
tests/base_init_linext2_alt3.sav [new file with mode: 0644]
tests/base_init_linext2_alt4.sav [new file with mode: 0644]
tests/base_init_linext2_alt5.sav [new file with mode: 0644]
tests/base_init_linext_alt0.sav [new file with mode: 0644]
tests/base_init_linext_alt1.sav [new file with mode: 0644]
tests/base_init_linext_alt10.sav [new file with mode: 0644]
tests/base_init_linext_alt11.sav [new file with mode: 0644]
tests/base_init_linext_alt12.sav [new file with mode: 0644]
tests/base_init_linext_alt13.sav [new file with mode: 0644]
tests/base_init_linext_alt14.sav [new file with mode: 0644]
tests/base_init_linext_alt15.sav [new file with mode: 0644]
tests/base_init_linext_alt2.sav [new file with mode: 0644]
tests/base_init_linext_alt3.sav [new file with mode: 0644]
tests/base_init_linext_alt4.sav [new file with mode: 0644]
tests/base_init_linext_alt5.sav [new file with mode: 0644]
tests/base_init_linext_alt6.sav [new file with mode: 0644]
tests/base_init_linext_alt7.sav [new file with mode: 0644]
tests/base_init_linext_alt8.sav [new file with mode: 0644]
tests/base_init_linext_alt9.sav [new file with mode: 0644]
tests/base_init_linext_raf.nit [new file with mode: 0644]
tests/base_init_linext_raf.sav [new file with mode: 0644]
tests/base_init_raf.nit [new file with mode: 0644]
tests/base_init_raf.sav [new file with mode: 0644]
tests/base_inline_statement.nit [new file with mode: 0644]
tests/base_inline_statement.sav [new file with mode: 0644]
tests/base_inline_statement_alt1.sav [new file with mode: 0644]
tests/base_inline_statement_alt2.sav [new file with mode: 0644]
tests/base_inline_statement_alt3.sav [new file with mode: 0644]
tests/base_int.nit [new file with mode: 0644]
tests/base_int.sav [new file with mode: 0644]
tests/base_isa.nit [new file with mode: 0644]
tests/base_isa.sav [new file with mode: 0644]
tests/base_isa_cast.nit [new file with mode: 0644]
tests/base_isa_cast.sav [new file with mode: 0644]
tests/base_isa_cast_alt1.sav [new file with mode: 0644]
tests/base_isa_cast_alt2.sav [new file with mode: 0644]
tests/base_isa_cast_alt3.sav [new file with mode: 0644]
tests/base_isa_cast_alt4.sav [new file with mode: 0644]
tests/base_isa_cast_alt5.sav [new file with mode: 0644]
tests/base_isa_cast_alt6.sav [new file with mode: 0644]
tests/base_isa_nil.nit [new file with mode: 0644]
tests/base_isa_nil.sav [new file with mode: 0644]
tests/base_once.nit [new file with mode: 0644]
tests/base_once.sav [new file with mode: 0644]
tests/base_primitive.nit [new file with mode: 0644]
tests/base_primitive.sav [new file with mode: 0644]
tests/base_prot.nit [new file with mode: 0644]
tests/base_prot.sav [new file with mode: 0644]
tests/base_prot2.nit [new file with mode: 0644]
tests/base_prot2.sav [new file with mode: 0644]
tests/base_prot2_alt1.sav [new file with mode: 0644]
tests/base_prot2_alt2.sav [new file with mode: 0644]
tests/base_prot2_alt3.sav [new file with mode: 0644]
tests/base_prot2_alt4.sav [new file with mode: 0644]
tests/base_prot2_alt5.sav [new file with mode: 0644]
tests/base_prot3.nit [new file with mode: 0644]
tests/base_prot3.sav [new file with mode: 0644]
tests/base_sig_inh.nit [new file with mode: 0644]
tests/base_sig_inh.sav [new file with mode: 0644]
tests/base_simple.nit [new file with mode: 0644]
tests/base_simple.sav [new file with mode: 0644]
tests/base_simple2.nit [new file with mode: 0644]
tests/base_simple2.sav [new file with mode: 0644]
tests/base_super_linext.nit [new file with mode: 0644]
tests/base_super_linext.sav [new file with mode: 0644]
tests/base_super_linext_raf.nit [new file with mode: 0644]
tests/base_super_linext_raf.sav [new file with mode: 0644]
tests/base_virtual_type.nit [new file with mode: 0644]
tests/base_virtual_type.sav [new file with mode: 0644]
tests/base_virtual_type2.nit [new file with mode: 0644]
tests/base_virtual_type2.sav [new file with mode: 0644]
tests/base_virtual_type2_alt1.sav [new file with mode: 0644]
tests/base_virtual_type3.nit [new file with mode: 0644]
tests/base_virtual_type3.sav [new file with mode: 0644]
tests/base_virtual_type3_alt1.sav [new file with mode: 0644]
tests/base_virtual_type4.nit [new file with mode: 0644]
tests/base_virtual_type4.sav [new file with mode: 0644]
tests/base_virtual_type4_alt1.sav [new file with mode: 0644]
tests/base_virtual_type5.nit [new file with mode: 0644]
tests/base_virtual_type5.sav [new file with mode: 0644]
tests/base_virtual_type5_alt1.sav [new file with mode: 0644]
tests/base_virtual_type5_alt2.sav [new file with mode: 0644]
tests/base_virtual_type6.nit [new file with mode: 0644]
tests/base_virtual_type6.sav [new file with mode: 0644]
tests/base_virtual_type7.nit [new file with mode: 0644]
tests/base_virtual_type7.sav [new file with mode: 0644]
tests/base_virtual_type_alt1.sav [new file with mode: 0644]
tests/base_virtual_type_alt2.sav [new file with mode: 0644]
tests/base_virtual_type_alt3.sav [new file with mode: 0644]
tests/bench_421.nit [new file with mode: 0644]
tests/bench_421.sav [new file with mode: 0644]
tests/bench_421_ref.c [new file with mode: 0644]
tests/bench_complex_sort.nit [new file with mode: 0644]
tests/bench_complex_sort.sav [new file with mode: 0644]
tests/bench_fib.nit [new file with mode: 0644]
tests/bench_fib.sav [new file with mode: 0644]
tests/bench_fib_ref.c [new file with mode: 0644]
tests/bench_netsim.nit [new file with mode: 0644]
tests/bench_netsim.sav [new file with mode: 0644]
tests/bench_nsieve_bool.nit [new file with mode: 0644]
tests/bench_nsieve_bool.sav [new file with mode: 0644]
tests/bench_prime.nit [new file with mode: 0644]
tests/bench_prime.sav [new file with mode: 0644]
tests/bench_random_n_sort.nit [new file with mode: 0644]
tests/bench_random_n_sort.sav [new file with mode: 0644]
tests/bench_send.nit [new file with mode: 0644]
tests/bench_send.sav [new file with mode: 0644]
tests/bench_send2.nit [new file with mode: 0644]
tests/bench_send2.sav [new file with mode: 0644]
tests/bench_string_append.nit [new file with mode: 0644]
tests/bench_string_append.sav [new file with mode: 0644]
tests/bench_string_super.nit [new file with mode: 0644]
tests/bench_string_super.sav [new file with mode: 0644]
tests/bench_string_tos.nit [new file with mode: 0644]
tests/bench_string_tos.sav [new file with mode: 0644]
tests/bench_svn105_papillon.log.sav [new file with mode: 0644]
tests/bench_svn107_bird.log.sav [new file with mode: 0644]
tests/bench_svn219_bird.log.sav [new file with mode: 0644]
tests/bench_tak.nit [new file with mode: 0644]
tests/bench_tak.sav [new file with mode: 0644]
tests/error_array_ambig.nit [new file with mode: 0644]
tests/error_array_ambig.sav [new file with mode: 0644]
tests/error_attr_2def.nit [new file with mode: 0644]
tests/error_attr_2def.sav [new file with mode: 0644]
tests/error_attr_assign.nit [new file with mode: 0644]
tests/error_attr_assign.sav [new file with mode: 0644]
tests/error_attr_unk.nit [new file with mode: 0644]
tests/error_attr_unk.sav [new file with mode: 0644]
tests/error_class_glob.nit [new file with mode: 0644]
tests/error_cons_arity.nit [new file with mode: 0644]
tests/error_cons_arity.sav [new file with mode: 0644]
tests/error_cons_arity2.nit [new file with mode: 0644]
tests/error_cons_arity2.sav [new file with mode: 0644]
tests/error_constraint.nit [new file with mode: 0644]
tests/error_constraint.sav [new file with mode: 0644]
tests/error_constraint_raf.nit.broken [new file with mode: 0644]
tests/error_decl_type_var.nit [new file with mode: 0644]
tests/error_decl_type_var.sav [new file with mode: 0644]
tests/error_defs.nit [new file with mode: 0644]
tests/error_defs.sav [new file with mode: 0644]
tests/error_defs_alt1.sav [new file with mode: 0644]
tests/error_defs_alt2.sav [new file with mode: 0644]
tests/error_defs_alt3.sav [new file with mode: 0644]
tests/error_defs_alt4.sav [new file with mode: 0644]
tests/error_defs_alt5.sav [new file with mode: 0644]
tests/error_defs_alt6.sav [new file with mode: 0644]
tests/error_defs_alt7.sav [new file with mode: 0644]
tests/error_defs_alt8.sav [new file with mode: 0644]
tests/error_file_access.sav [new file with mode: 0644]
tests/error_for_coll.nit [new file with mode: 0644]
tests/error_for_coll.sav [new file with mode: 0644]
tests/error_formal.nit [new file with mode: 0644]
tests/error_formal.sav [new file with mode: 0644]
tests/error_fun_ret.nit [new file with mode: 0644]
tests/error_fun_ret.sav [new file with mode: 0644]
tests/error_fun_ret2.nit [new file with mode: 0644]
tests/error_fun_ret2.sav [new file with mode: 0644]
tests/error_fun_ret3.nit [new file with mode: 0644]
tests/error_fun_ret3.sav [new file with mode: 0644]
tests/error_fun_ret4.nit [new file with mode: 0644]
tests/error_fun_ret4.sav [new file with mode: 0644]
tests/error_fun_ret5.nit [new file with mode: 0644]
tests/error_fun_ret5.sav [new file with mode: 0644]
tests/error_gen_f_inh_clash.nit [new file with mode: 0644]
tests/error_gen_f_inh_clash.sav [new file with mode: 0644]
tests/error_if_bool.nit [new file with mode: 0644]
tests/error_if_bool.sav [new file with mode: 0644]
tests/error_inh_clash.nit [new file with mode: 0644]
tests/error_inh_clash.sav [new file with mode: 0644]
tests/error_inh_loop.nit [new file with mode: 0644]
tests/error_inh_loop.sav [new file with mode: 0644]
tests/error_kern_attr_any.nit [new file with mode: 0644]
tests/error_kern_attr_any.sav [new file with mode: 0644]
tests/error_kern_attr_int.nit [new file with mode: 0644]
tests/error_kern_attr_int.sav [new file with mode: 0644]
tests/error_left_bool.nit [new file with mode: 0644]
tests/error_left_bool.sav [new file with mode: 0644]
tests/error_loop_bool_until.sav [new file with mode: 0644]
tests/error_loop_bool_while.nit [new file with mode: 0644]
tests/error_loop_bool_while.sav [new file with mode: 0644]
tests/error_meth_2def.nit [new file with mode: 0644]
tests/error_meth_2def.sav [new file with mode: 0644]
tests/error_meth_2def2.nit [new file with mode: 0644]
tests/error_meth_2def2.sav [new file with mode: 0644]
tests/error_meth_create.nit [new file with mode: 0644]
tests/error_meth_create.sav [new file with mode: 0644]
tests/error_meth_unk1.nit [new file with mode: 0644]
tests/error_meth_unk1.sav [new file with mode: 0644]
tests/error_meth_unk2.nit [new file with mode: 0644]
tests/error_meth_unk2.sav [new file with mode: 0644]
tests/error_mod_unk.nit [new file with mode: 0644]
tests/error_mod_unk.sav [new file with mode: 0644]
tests/error_prop_glob.nit [new file with mode: 0644]
tests/error_prop_loc.nit [new file with mode: 0644]
tests/error_prop_loc.sav [new file with mode: 0644]
tests/error_ref_attr.nit [new file with mode: 0644]
tests/error_ref_attr.sav [new file with mode: 0644]
tests/error_ref_fun.nit [new file with mode: 0644]
tests/error_ref_fun.sav [new file with mode: 0644]
tests/error_ref_param.nit [new file with mode: 0644]
tests/error_ref_proc.nit [new file with mode: 0644]
tests/error_ref_proc.sav [new file with mode: 0644]
tests/error_ref_ret.nit [new file with mode: 0644]
tests/error_ref_ret.sav [new file with mode: 0644]
tests/error_req_loop1.nit [new file with mode: 0644]
tests/error_req_loop1.sav [new file with mode: 0644]
tests/error_req_loop2.nit [new file with mode: 0644]
tests/error_req_loop2.sav [new file with mode: 0644]
tests/error_ret_fun.nit [new file with mode: 0644]
tests/error_ret_fun.sav [new file with mode: 0644]
tests/error_ret_proc.nit [new file with mode: 0644]
tests/error_ret_proc.sav [new file with mode: 0644]
tests/error_ret_type.nit [new file with mode: 0644]
tests/error_ret_type.sav [new file with mode: 0644]
tests/error_right_bool.nit [new file with mode: 0644]
tests/error_right_bool.sav [new file with mode: 0644]
tests/error_spe_attr.nit [new file with mode: 0644]
tests/error_spe_attr.sav [new file with mode: 0644]
tests/error_spe_fun.nit [new file with mode: 0644]
tests/error_spe_fun.sav [new file with mode: 0644]
tests/error_spe_param.nit [new file with mode: 0644]
tests/error_spe_param.sav [new file with mode: 0644]
tests/error_spe_param2.nit [new file with mode: 0644]
tests/error_spe_param2.sav [new file with mode: 0644]
tests/error_spe_proc.nit [new file with mode: 0644]
tests/error_spe_proc.sav [new file with mode: 0644]
tests/error_spe_ret.nit [new file with mode: 0644]
tests/error_spe_ret.sav [new file with mode: 0644]
tests/error_star_type.nit [new file with mode: 0644]
tests/error_star_type.sav [new file with mode: 0644]
tests/error_super_many.nit [new file with mode: 0644]
tests/error_super_none.nit [new file with mode: 0644]
tests/error_super_none.sav [new file with mode: 0644]
tests/error_unk_class.nit [new file with mode: 0644]
tests/error_unk_class.sav [new file with mode: 0644]
tests/error_var_args.nit [new file with mode: 0644]
tests/error_var_args.sav [new file with mode: 0644]
tests/error_var_args2.nit [new file with mode: 0644]
tests/error_var_args2.sav [new file with mode: 0644]
tests/error_var_assign.nit [new file with mode: 0644]
tests/error_var_assign.sav [new file with mode: 0644]
tests/example_421.inputs [new file with mode: 0644]
tests/example_421.nit [new file with mode: 0644]
tests/example_421.sav [new file with mode: 0644]
tests/example_beer.nit [new file with mode: 0644]
tests/example_beer.sav [new file with mode: 0644]
tests/example_exec_ls.nit [new file with mode: 0644]
tests/example_hanoi.nit [new file with mode: 0644]
tests/example_hanoi.sav [new file with mode: 0644]
tests/example_objet.nit [new file with mode: 0644]
tests/example_objet.sav [new file with mode: 0644]
tests/example_point.nit [new file with mode: 0644]
tests/example_point.sav [new file with mode: 0644]
tests/example_procedural_string.nit [new file with mode: 0644]
tests/example_procedural_string.sav [new file with mode: 0644]
tests/example_simple.nit [new file with mode: 0644]
tests/example_simple.sav [new file with mode: 0644]
tests/example_sorter.nit [new file with mode: 0644]
tests/example_sorter.sav [new file with mode: 0644]
tests/example_sorts.nit [new file with mode: 0644]
tests/example_sorts.sav [new file with mode: 0644]
tests/example_string.nit [new file with mode: 0644]
tests/example_string.sav [new file with mode: 0644]
tests/example_time.nit [new file with mode: 0644]
tests/example_time.sav [new file with mode: 0644]
tests/example_variable.nit [new file with mode: 0644]
tests/example_variable.sav [new file with mode: 0644]
tests/example_wc.inputs [new file with mode: 0644]
tests/example_wc.nit [new file with mode: 0644]
tests/example_wc.sav [new file with mode: 0644]
tests/fibonacci.inputs [new file with mode: 0644]
tests/fibonacci.sav [new file with mode: 0644]
tests/galerie.nit [new file with mode: 0644]
tests/galerie.sav [new file with mode: 0644]
tests/gccbug_attribute_access.nit [new file with mode: 0644]
tests/gccbug_attribute_access.sav [new file with mode: 0644]
tests/hello_world.sav [new file with mode: 0644]
tests/module_0.nit [new file with mode: 0644]
tests/module_0.sav [new file with mode: 0644]
tests/module_1.nit [new file with mode: 0644]
tests/module_1.sav [new file with mode: 0644]
tests/module_2.nit [new file with mode: 0644]
tests/module_simple.nit [new file with mode: 0644]
tests/module_simple.sav [new file with mode: 0644]
tests/print_arguments.sav [new file with mode: 0644]
tests/procedural_array.sav [new file with mode: 0644]
tests/rterror_check.nit [new file with mode: 0644]
tests/rterror_cov_param.nit [new file with mode: 0644]
tests/rterror_cov_ret.nit [new file with mode: 0644]
tests/rterror_deep.nit [new file with mode: 0644]
tests/rterror_nilcall_attr.nit [new file with mode: 0644]
tests/rterror_nilcall_mono.nit [new file with mode: 0644]
tests/rterror_nilcall_poly.nit [new file with mode: 0644]
tests/rterror_nilcall_undead.nit [new file with mode: 0644]
tests/shootout_ackermann.args [new file with mode: 0644]
tests/shootout_ackermann.nit [new file with mode: 0644]
tests/shootout_ackermann.sav [new file with mode: 0644]
tests/shootout_binarytrees.args [new file with mode: 0644]
tests/shootout_binarytrees.nit [new file with mode: 0644]
tests/shootout_binarytrees.sav [new file with mode: 0644]
tests/shootout_mandelbrot.args [new file with mode: 0644]
tests/shootout_mandelbrot.nit [new file with mode: 0644]
tests/shootout_mandelbrot.sav [new file with mode: 0644]
tests/shootout_nsieve.nit [new file with mode: 0644]
tests/shootout_nsieve.sav [new file with mode: 0644]
tests/shootout_pidigits.args [new file with mode: 0644]
tests/shootout_pidigits.nit [new file with mode: 0644]
tests/shootout_startup.nit [new file with mode: 0644]
tests/shootout_startup.sav [new file with mode: 0644]
tests/simple.nit [new file with mode: 0644]
tests/simple.sav [new file with mode: 0644]
tests/sol.nit [new file with mode: 0644]
tests/store_save.sh [new file with mode: 0755]
tests/test_accessor.nit [new file with mode: 0644]
tests/test_accessor.sav [new file with mode: 0644]
tests/test_args.args [new file with mode: 0644]
tests/test_args.nit [new file with mode: 0644]
tests/test_args.sav [new file with mode: 0644]
tests/test_array.nit [new file with mode: 0644]
tests/test_array.sav [new file with mode: 0644]
tests/test_array_int.nit [new file with mode: 0644]
tests/test_array_int.sav [new file with mode: 0644]
tests/test_atoi.nit [new file with mode: 0644]
tests/test_atoi.sav [new file with mode: 0644]
tests/test_attr.nit [new file with mode: 0644]
tests/test_attr.sav [new file with mode: 0644]
tests/test_attr_long.nit [new file with mode: 0644]
tests/test_attr_long.sav [new file with mode: 0644]
tests/test_blocks.nit [new file with mode: 0644]
tests/test_blocks.sav [new file with mode: 0644]
tests/test_boxing.nit [new file with mode: 0644]
tests/test_boxing.sav [new file with mode: 0644]
tests/test_break.nit [new file with mode: 0644]
tests/test_break.sav [new file with mode: 0644]
tests/test_calls.nit [new file with mode: 0644]
tests/test_calls.sav [new file with mode: 0644]
tests/test_coll.nit [new file with mode: 0644]
tests/test_coll.sav [new file with mode: 0644]
tests/test_coll_array.nit [new file with mode: 0644]
tests/test_coll_array.sav [new file with mode: 0644]
tests/test_combined_assignment.nit [new file with mode: 0644]
tests/test_combined_assignment.sav [new file with mode: 0644]
tests/test_combined_assignment_alt1.sav [new file with mode: 0644]
tests/test_cond.nit [new file with mode: 0644]
tests/test_cond.sav [new file with mode: 0644]
tests/test_create.nit [new file with mode: 0644]
tests/test_create.sav [new file with mode: 0644]
tests/test_create_more.nit [new file with mode: 0644]
tests/test_create_more.sav [new file with mode: 0644]
tests/test_eq.nit [new file with mode: 0644]
tests/test_eq.sav [new file with mode: 0644]
tests/test_eq2.nit [new file with mode: 0644]
tests/test_eq2.sav [new file with mode: 0644]
tests/test_equal.nit [new file with mode: 0644]
tests/test_equal.sav [new file with mode: 0644]
tests/test_equal_nil.nit [new file with mode: 0644]
tests/test_equal_nil.sav [new file with mode: 0644]
tests/test_exec.nit [new file with mode: 0644]
tests/test_exec.sav [new file with mode: 0644]
tests/test_extern.extern [new file with mode: 0644]
tests/test_extern.nit [new file with mode: 0644]
tests/test_extern.sav [new file with mode: 0644]
tests/test_extern_nit.c [new file with mode: 0644]
tests/test_extern_nit.h [new file with mode: 0644]
tests/test_fdstream.inputs [new file with mode: 0644]
tests/test_fdstream.nit [new file with mode: 0644]
tests/test_fdstream.sav [new file with mode: 0644]
tests/test_file_read.nit [new file with mode: 0644]
tests/test_file_read.sav [new file with mode: 0644]
tests/test_file_write.nit [new file with mode: 0644]
tests/test_file_write.sav [new file with mode: 0644]
tests/test_float.nit [new file with mode: 0644]
tests/test_float.sav [new file with mode: 0644]
tests/test_for.nit [new file with mode: 0644]
tests/test_for.sav [new file with mode: 0644]
tests/test_gen.nit [new file with mode: 0644]
tests/test_gen.sav [new file with mode: 0644]
tests/test_gen_inh.nit [new file with mode: 0644]
tests/test_gen_inh.sav [new file with mode: 0644]
tests/test_genplus.nit [new file with mode: 0644]
tests/test_genplus.sav [new file with mode: 0644]
tests/test_gets.inputs [new file with mode: 0644]
tests/test_gets.nit [new file with mode: 0644]
tests/test_gets.sav [new file with mode: 0644]
tests/test_hash.nit [new file with mode: 0644]
tests/test_hash.sav [new file with mode: 0644]
tests/test_id.nit [new file with mode: 0644]
tests/test_id.sav [new file with mode: 0644]
tests/test_inh.nit [new file with mode: 0644]
tests/test_inheritance.nit [new file with mode: 0644]
tests/test_inheritance.sav [new file with mode: 0644]
tests/test_inheritance_raf.nit [new file with mode: 0644]
tests/test_int_to_s.nit [new file with mode: 0644]
tests/test_int_to_s.sav [new file with mode: 0644]
tests/test_io.inputs [new file with mode: 0644]
tests/test_io.nit [new file with mode: 0644]
tests/test_io.sav [new file with mode: 0644]
tests/test_isa.nit [new file with mode: 0644]
tests/test_isa.sav [new file with mode: 0644]
tests/test_kernel.nit [new file with mode: 0644]
tests/test_kernel.sav [new file with mode: 0644]
tests/test_let.nit [new file with mode: 0644]
tests/test_let.sav [new file with mode: 0644]
tests/test_list.nit [new file with mode: 0644]
tests/test_list.sav [new file with mode: 0644]
tests/test_map.nit [new file with mode: 0644]
tests/test_map.sav [new file with mode: 0644]
tests/test_math.nit [new file with mode: 0644]
tests/test_math.sav [new file with mode: 0644]
tests/test_mem.nit [new file with mode: 0644]
tests/test_mem.sav [new file with mode: 0644]
tests/test_meta.nit [new file with mode: 0644]
tests/test_meta.sav [new file with mode: 0644]
tests/test_multiconstraint.nit [new file with mode: 0644]
tests/test_multiconstraint.sav [new file with mode: 0644]
tests/test_multiconstraint_inh.nit [new file with mode: 0644]
tests/test_multiconstraint_inh.sav [new file with mode: 0644]
tests/test_multiconstraint_ref.nit [new file with mode: 0644]
tests/test_multiconstraint_ref.sav [new file with mode: 0644]
tests/test_multiconstraint_ref2.nit [new file with mode: 0644]
tests/test_multiconstraint_ref2.sav [new file with mode: 0644]
tests/test_nil.nit [new file with mode: 0644]
tests/test_nil.sav [new file with mode: 0644]
tests/test_obj.nit [new file with mode: 0644]
tests/test_obj.sav [new file with mode: 0644]
tests/test_operator_brackets.nit [new file with mode: 0644]
tests/test_operator_brackets.sav [new file with mode: 0644]
tests/test_operators.nit [new file with mode: 0644]
tests/test_operators.sav [new file with mode: 0644]
tests/test_paire.nit [new file with mode: 0644]
tests/test_partial_order.sav [new file with mode: 0644]
tests/test_print.nit [new file with mode: 0644]
tests/test_print.sav [new file with mode: 0644]
tests/test_range.nit [new file with mode: 0644]
tests/test_range.sav [new file with mode: 0644]
tests/test_refinement.nit [new file with mode: 0644]
tests/test_refinement.sav [new file with mode: 0644]
tests/test_return.nit [new file with mode: 0644]
tests/test_return.sav [new file with mode: 0644]
tests/test_star.nit [new file with mode: 0644]
tests/test_star.sav [new file with mode: 0644]
tests/test_stdio.inputs [new file with mode: 0644]
tests/test_stdio.nit [new file with mode: 0644]
tests/test_stdio.sav [new file with mode: 0644]
tests/test_string.nit [new file with mode: 0644]
tests/test_string.sav [new file with mode: 0644]
tests/test_string_long.nit [new file with mode: 0644]
tests/test_string_long.sav [new file with mode: 0644]
tests/test_string_search.nit [new file with mode: 0644]
tests/test_string_search.sav [new file with mode: 0644]
tests/test_string_unicode.nit [new file with mode: 0644]
tests/test_string_unicode.sav [new file with mode: 0644]
tests/test_substring.nit [new file with mode: 0644]
tests/test_substring.sav [new file with mode: 0644]
tests/test_super.nit [new file with mode: 0644]
tests/test_super.sav [new file with mode: 0644]
tests/test_super_explicit.nit [new file with mode: 0644]
tests/test_super_gen.nit [new file with mode: 0644]
tests/test_super_gen.sav [new file with mode: 0644]
tests/test_super_gen_raf.nit [new file with mode: 0644]
tests/test_super_gen_raf.sav [new file with mode: 0644]
tests/test_super_param.nit [new file with mode: 0644]
tests/test_super_param.sav [new file with mode: 0644]
tests/test_super_param_raf.nit [new file with mode: 0644]
tests/test_super_param_raf.sav [new file with mode: 0644]
tests/test_super_param_raf2.nit [new file with mode: 0644]
tests/test_super_param_raf2.sav [new file with mode: 0644]
tests/test_superstring.nit [new file with mode: 0644]
tests/test_superstring.sav [new file with mode: 0644]
tests/test_symbol.nit [new file with mode: 0644]
tests/test_symbol.sav [new file with mode: 0644]
tests/test_undead.nit [new file with mode: 0644]
tests/test_undead.sav [new file with mode: 0644]
tests/test_variance_attr.nit [new file with mode: 0644]
tests/test_variance_attr.sav [new file with mode: 0644]
tests/test_variance_param.nit [new file with mode: 0644]
tests/test_variance_param.sav [new file with mode: 0644]
tests/test_variance_ret.nit [new file with mode: 0644]
tests/test_variance_ret.sav [new file with mode: 0644]
tests/tests.sh [new file with mode: 0755]

diff --git a/.hgignore b/.hgignore
new file mode 100644 (file)
index 0000000..7cfde26
--- /dev/null
+++ b/.hgignore
@@ -0,0 +1,19 @@
+syntax: glob
+*.bak
+.nit_compile
+*.orig
+nitc
+nitdoc
+doc/stdlib
+
+c_src/*.o
+c_src/*.cksum
+
+tests/*.res
+tests/*.log
+tests/*.bin
+tests/*.err
+tests/alt
+
+syntax: regexp
+
diff --git a/BUGS b/BUGS
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/Changelog b/Changelog
new file mode 100644 (file)
index 0000000..0ec745f
--- /dev/null
+++ b/Changelog
@@ -0,0 +1,4 @@
+version 0.1
+ * First release under the NIT name.
+
+ -- Wed, 09 Jul 2008 15:24:55 -0400
diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..d645695
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..e88cd8f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,62 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2008 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+NITCOPT=
+
+all: bin/nitc bin/nitdoc doc/stdlib/index.html
+
+bin/nitc: c_src/nitc src/parser/parser.nit
+       @echo '***************************************************************'
+       @echo '* Compile nitc from NIT source files                          *'
+       @echo '***************************************************************'
+       cp c_src/nitc bin/nitc
+       bin/nitc ${NITCOPT} -o bin/nitc -O src/nitc.nit
+
+bin/nitdoc: bin/nitc
+       @echo '***************************************************************'
+       @echo '* Compile nitdoc from NIT source files                        *'
+       @echo '***************************************************************'
+       bin/nitc ${NITCOPT} -o bin/nitdoc -O src/nitdoc.nit
+
+doc/stdlib/index.html: bin/nitdoc
+       @echo '***************************************************************'
+       @echo '* Generate doc for NIT standard library                       *'
+       @echo '***************************************************************'
+       bin/nitdoc lib/*.nit -d doc/stdlib
+
+c_src/nitc:
+       @echo '***************************************************************'
+       @echo '* Compile nitc from C source files                            *'
+       @echo '***************************************************************'
+       make -C c_src
+
+src/parser/parser.nit:
+       @echo '***************************************************************'
+       @echo '* Generate nit parser                                         *'
+       @echo '***************************************************************'
+       make -C src/parser
+
+clean:
+       rm -rf -- .nit_compile 2> /dev/null || true
+       make -C c_src clean 
+       make -C src/parser clean 
+       make -C tests clean 
+
+dist-clean: clean
+       make -C c_src dist-clean
+       make -C src/parser dist-clean
+       rm -rf -- bin/nitc bin/nitdoc doc/stdlib
+
diff --git a/NOTICE b/NOTICE
new file mode 100644 (file)
index 0000000..8166308
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,7 @@
+This product includes software developed as part of the Nit Language
+project ( http://nitlanguage.org ).
+
+Nit Language
+ Copyright 2004-2008 Jean Privat <jean@pryen.org>
+ Copyright 2006-2008 Floréal Morandat <morandat@lirmm.fr>
+ Copyright 2008 Etienne M. Gagnon <egagnon@j-meg.com>
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..c5d3c3c
--- /dev/null
+++ b/README
@@ -0,0 +1,51 @@
+NIT is a statically typed object-oriented programming language.
+The goal of NIT is to propose a statically typed programming language where structure is not a pain.
+
+NIT has a simple straightforward style and can usually be picked up quickly, particularly by anyone who has programmed before.
+While object-oriented, it allows procedural styles.
+
+The NIT Compiler (nitc) produces efficient machine language binaries.
+
+Some NIT features:
+ * Pure Object-Oriented.
+ * Multiple Inheritance.
+ * Realist typing policy.
+ * Light and clear syntax.
+
+
+Requirement:
+       
+       * gcc           http://gcc.gnu.org/
+
+
+Important files and directory:
+
+       bin/            The NIT tools
+       bin/prmc        The NIT compiler
+       bin/prmdoc      The NIT autodoc
+       BUGS            Known big usability bugs
+       c_src/          C code of nitc (needed to bootstrap)
+       Changelog       List of change between versions
+       doc/            Documentation
+       examples/       Program examples written in NIT
+       LICENCE         License of the software
+       tests/          Non-regression test-suite
+       lib/            NIT standard library
+       Makefile        Bootstrap the NIT tools
+       NOTICE          List of the authors
+       README          This file
+       src/            The NIT tool sources (written in NIT)
+       TODO            What next features are planed
+
+
+How to start:
+
+ * $ make
+ * $ bin/nitc examples/hello_world.nit
+ * $ ./hello_world
+
+
+More information:
+
+       http://www.nitlanguage.org
+
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..2a0847f
--- /dev/null
+++ b/TODO
@@ -0,0 +1,21 @@
+To finish:
+
+* Local property conflicts
+* Owner module conflicts (name and value)
+
+To discuss:
+
+* Attributes
+* Default constructor and constructor inheritance
+
+Later:
+
+* Qualified name
+* Blocks
+* GC
+* Nullable
+* can
+* Real type check (and not just class check)
+* migrate gccx to the executable
+* do not reanalysis/regenerate modules unless needed
+
diff --git a/bin/gccx b/bin/gccx
new file mode 100755 (executable)
index 0000000..2a31b1e
--- /dev/null
+++ b/bin/gccx
@@ -0,0 +1,83 @@
+#!/bin/sh
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2008 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Separately recompile a bunch of c files then link them
+
+OPTS="-g" # option for compiler call
+objs="" # List of .o files
+CC="gcc --ansi --pedantic" # Default compiler call
+ext="_savo _sav" # Default flavor to reuse
+out="a.out"  # Default output binary filename
+dir="" # Default tmp dir
+CKSUM="cksum" # Tool that perfors checksum. cksum seems to be very portable
+
+usage()
+{
+       e=`basename "$0"`
+       cat<<END
+Usage: $e [options] modulename [options for module execution]
+-O          Compile with optimizations
+-i          Use the intel compiler instead of gcc
+-I path     Add a include directory
+-o name     Call name the executable
+-d          Create temporary files in a specific directory
+-h          This help
+END
+}
+
+stop=false
+while [ $stop = false ]; do
+       case $1 in 
+               -O) CC="gcc --ansi --pedantic -O2" ext="_savo"; shift;;
+               -i) CC="/opt/intel/cc/10.1.015/bin/icc -O2" ext="_savi"; shift;;
+               -I) OPTS="$OPTS -I $2"; shift; shift;;
+               -o) out="$2"; shift; shift;;
+               -d) dir="$2/"; shift; shift;;
+               -x) OPTS="$OPTS $2"; shift; shift;;
+               -h|"") usage; exit;;
+               *) stop=true
+       esac
+done
+
+for i in "$@"; do
+       j=`basename "$i" .c`
+       found="false"
+       cksum=`gcc -E $i 2> /dev/null | $CKSUM`
+       for e in $ext; do
+               o="$dir$j.$e.o"
+               cksumfile="$dir$j.$e.cksum"
+               if [ -f "$cksumfile" -a -f "$o" ]; then
+                       cksumtry=`cat $cksumfile`
+                       if [ "x$cksum" = "x$cksumtry" ]; then
+                               found=true
+                               break
+                       fi
+               fi
+       done
+       if [ $found = false ]; then
+               echo "* $CC $OPTS -c $i -o $o" >&2
+               if $CC $OPTS -c $i -o $o; then
+                       echo "$cksum" > "$cksumfile"
+               else
+                       exit 1
+               fi
+       fi
+       objs="$objs $o"
+done
+
+echo "* $CC $OPTS -lm $objs -o $out" >&2
+$CC $OPTS -lm $objs -o "$out"
diff --git a/c_src/Makefile b/c_src/Makefile
new file mode 100644 (file)
index 0000000..fc7b7e8
--- /dev/null
@@ -0,0 +1,25 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2008 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+all:
+       ln -sf . .nit_compile 2> /dev/null || true
+       sh nitc._build.sh -o nitc
+
+clean:
+       rm -f -- *._sav[oi].* *._sav.* || true
+
+dist-clean: clean
+       rm -f -- nitc || true
diff --git a/c_src/README b/c_src/README
new file mode 100644 (file)
index 0000000..df47615
--- /dev/null
@@ -0,0 +1,2 @@
+This directory contains C files generated by nitc, the NIT compiler, of itself.
+They are used to boostrap nitc, the NIT compiler
diff --git a/c_src/abstract_collection._sep.c b/c_src/abstract_collection._sep.c
new file mode 100644 (file)
index 0000000..4ee19e0
--- /dev/null
@@ -0,0 +1,896 @@
+#include "abstract_collection._sep.h"
+val_t abstract_collection___Collection___iterator(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Collection::iterator (bin/../lib/standard//abstract_collection.nit:42,2--43:26)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method iterator called (bin/../lib/standard//abstract_collection.nit:42,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___Collection___is_empty(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Collection::is_empty (bin/../lib/standard//abstract_collection.nit:45,2--46:20)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method is_empty called (bin/../lib/standard//abstract_collection.nit:45,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___Collection___length(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Collection::length (bin/../lib/standard//abstract_collection.nit:48,2--49:17)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method length called (bin/../lib/standard//abstract_collection.nit:48,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___Collection___has(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Collection::has (bin/../lib/standard//abstract_collection.nit:51,2--53:24)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method has called (bin/../lib/standard//abstract_collection.nit:51,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___Collection___has_only(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Collection::has_only (bin/../lib/standard//abstract_collection.nit:55,2--58:29)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method has_only called (bin/../lib/standard//abstract_collection.nit:55,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___Collection___count(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Collection::count (bin/../lib/standard//abstract_collection.nit:60,2--62:25)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method count called (bin/../lib/standard//abstract_collection.nit:60,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___Collection___first(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Collection::first (bin/../lib/standard//abstract_collection.nit:64,2--65:14)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method first called (bin/../lib/standard//abstract_collection.nit:64,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___NaiveCollection___is_empty(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::NaiveCollection::is_empty (bin/../lib/standard//abstract_collection.nit:72,2--42)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstract_collection___NaiveCollection___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*NaiveCollection::length*/;
+  variable0 = TAG_Bool((variable0)==( TAG_Int(0)));
+  goto return_label0;
+  return_label0: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstract_collection___NaiveCollection___length(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::NaiveCollection::length (bin/../lib/standard//abstract_collection.nit:74,2--78:11)"};
+  val_t variable0;
+  val_t variable1;
+    val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  TAG_Int(0);
+  variable1 = ((abstract_collection___Collection___iterator_t)CALL( self,COLOR_abstract_collection___Collection___iterator))( self) /*NaiveCollection::iterator*/;
+  while (true) { /*for*/
+    variable2 = ((abstract_collection___Iterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable2)) break; /*for*/
+    variable2 = ((abstract_collection___Iterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*Iterator::item*/;
+    variable0 = TAG_Int(UNTAG_Int(variable0)+UNTAG_Int( variable0 /*nb*/)) /*nb*/;
+    continue_2: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*Iterator::next*/;
+  }
+  break_2: while(0);
+  variable0 =  variable0 /*nb*/;
+  goto return_label1;
+  return_label1: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstract_collection___NaiveCollection___has(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::NaiveCollection::has (bin/../lib/standard//abstract_collection.nit:81,2--84:14)"};
+  val_t variable0;
+  val_t variable1;
+    val_t variable2;
+    val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((abstract_collection___Collection___iterator_t)CALL( self,COLOR_abstract_collection___Collection___iterator))( self) /*NaiveCollection::iterator*/;
+  while (true) { /*for*/
+    variable2 = ((abstract_collection___Iterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable2)) break; /*for*/
+    variable2 = ((abstract_collection___Iterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*Iterator::item*/;
+    variable3 = TAG_Bool(( variable2 /*i*/ ==  variable0 /*item*/) || (( variable2 /*i*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*i*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*i*/, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*i*/,COLOR_kernel___Object_____eqeq))( variable2 /*i*/,  variable0 /*item*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable3)) { /*if*/
+      variable1 =  TAG_Bool(true);
+      goto return_label3;
+    }
+    continue_4: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*Iterator::next*/;
+  }
+  break_4: while(0);
+  variable1 =  TAG_Bool(false);
+  goto return_label3;
+  return_label3: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstract_collection___NaiveCollection___has_only(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::NaiveCollection::has_only (bin/../lib/standard//abstract_collection.nit:87,2--90:13)"};
+  val_t variable0;
+  val_t variable1;
+    val_t variable2;
+    val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((abstract_collection___Collection___iterator_t)CALL( self,COLOR_abstract_collection___Collection___iterator))( self) /*NaiveCollection::iterator*/;
+  while (true) { /*for*/
+    variable2 = ((abstract_collection___Iterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable2)) break; /*for*/
+    variable2 = ((abstract_collection___Iterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*Iterator::item*/;
+    variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*i*/ ==  variable0 /*item*/) || (( variable2 /*i*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*i*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*i*/, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*i*/,COLOR_kernel___Object_____eqeq))( variable2 /*i*/,  variable0 /*item*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable3)) { /*if*/
+      variable1 =  TAG_Bool(false);
+      goto return_label5;
+    }
+    continue_6: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*Iterator::next*/;
+  }
+  break_6: while(0);
+  variable1 =  TAG_Bool(true);
+  goto return_label5;
+  return_label5: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstract_collection___NaiveCollection___count(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::NaiveCollection::count (bin/../lib/standard//abstract_collection.nit:93,2--97:11)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+    val_t variable4;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  TAG_Int(0);
+  variable2 = ((abstract_collection___Collection___iterator_t)CALL( self,COLOR_abstract_collection___Collection___iterator))( self) /*NaiveCollection::iterator*/;
+  while (true) { /*for*/
+    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable3)) break; /*for*/
+    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
+    variable4 = TAG_Bool(( variable3 /*i*/ ==  variable0 /*item*/) || (( variable3 /*i*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*i*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*i*/, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*i*/,COLOR_kernel___Object_____eqeq))( variable3 /*i*/,  variable0 /*item*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable4)) { /*if*/
+      variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*nb*/;
+    }
+    continue_8: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+  }
+  break_8: while(0);
+  variable1 =  variable1 /*nb*/;
+  goto return_label7;
+  return_label7: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstract_collection___NaiveCollection___first(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::NaiveCollection::first (bin/../lib/standard//abstract_collection.nit:100,2--103:22)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstract_collection___NaiveCollection___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*NaiveCollection::length*/;
+  variable0 = TAG_Bool(UNTAG_Int(variable0)>UNTAG_Int( TAG_Int(0)));
+  if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert failed: bin/../lib/standard//abstract_collection.nit:102,3--19\n"); nit_exit(1);}
+  variable0 = ((abstract_collection___Collection___iterator_t)CALL( self,COLOR_abstract_collection___Collection___iterator))( self) /*NaiveCollection::iterator*/;
+  variable0 = ((abstract_collection___Iterator___item_t)CALL(variable0,COLOR_abstract_collection___Iterator___item))(variable0) /*Iterator::item*/;
+  goto return_label9;
+  return_label9: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstract_collection___Iterator___item(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Iterator::item (bin/../lib/standard//abstract_collection.nit:110,2--112:13)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method item called (bin/../lib/standard//abstract_collection.nit:110,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+void abstract_collection___Iterator___next(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Iterator::next (bin/../lib/standard//abstract_collection.nit:114,2--116:10)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method next called (bin/../lib/standard//abstract_collection.nit:114,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___Iterator___is_ok(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Iterator::is_ok (bin/../lib/standard//abstract_collection.nit:118,2--119:17)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method is_ok called (bin/../lib/standard//abstract_collection.nit:118,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___Container___first(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Container::first (bin/../lib/standard//abstract_collection.nit:126,2--33)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_abstract_collection___Container____item( self) /*Container::_item*/;
+  goto return_label10;
+  return_label10: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstract_collection___Container___is_empty(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Container::is_empty (bin/../lib/standard//abstract_collection.nit:128,2--36)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  TAG_Bool(false);
+  goto return_label11;
+  return_label11: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstract_collection___Container___length(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Container::length (bin/../lib/standard//abstract_collection.nit:130,2--30)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  TAG_Int(1);
+  goto return_label12;
+  return_label12: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstract_collection___Container___has(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Container::has (bin/../lib/standard//abstract_collection.nit:132,2--51)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_abstract_collection___Container____item( self) /*Container::_item*/;
+  variable1 = TAG_Bool((variable1 ==  variable0 /*an_item*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, variable0 /*an_item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  variable0 /*an_item*/) /*Object::==*/)))));
+  goto return_label13;
+  return_label13: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstract_collection___Container___has_only(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Container::has_only (bin/../lib/standard//abstract_collection.nit:134,2--56)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_abstract_collection___Container____item( self) /*Container::_item*/;
+  variable1 = TAG_Bool((variable1 ==  variable0 /*an_item*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, variable0 /*an_item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  variable0 /*an_item*/) /*Object::==*/)))));
+  goto return_label14;
+  return_label14: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstract_collection___Container___count(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Container::count (bin/../lib/standard//abstract_collection.nit:136,2--141:11)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_abstract_collection___Container____item( self) /*Container::_item*/;
+  variable1 = TAG_Bool((variable1 ==  variable0 /*an_item*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, variable0 /*an_item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  variable0 /*an_item*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable1)) { /*if*/
+    variable1 =  TAG_Int(1);
+    goto return_label15;
+  } else { /*if*/
+    variable1 =  TAG_Int(0);
+    goto return_label15;
+  }
+  return_label15: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstract_collection___Container___iterator(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Container::iterator (bin/../lib/standard//abstract_collection.nit:145,2--60)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = NEW_abstract_collection___ContainerIterator___init( self); /*new ContainerIterator[E]*/
+  goto return_label16;
+  return_label16: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void abstract_collection___Container___init(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, "abstract_collection::Container::init (bin/../lib/standard//abstract_collection.nit:147,2--148:24)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Container].i]) return;
+  ATTR_abstract_collection___Container____item( self) /*Container::_item*/ =  variable0 /*e*/;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Container].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___Container___item(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Container::item (bin/../lib/standard//abstract_collection.nit:150,2--151:32)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstract_collection___Container____item( self) /*Container::_item*/;
+}
+void abstract_collection___Container___item__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Container::item= (bin/../lib/standard//abstract_collection.nit:150,2--151:32)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstract_collection___Container____item( self) /*Container::_item*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___ContainerIterator___item(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::ContainerIterator::item (bin/../lib/standard//abstract_collection.nit:157,2--42)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_abstract_collection___ContainerIterator____container( self) /*ContainerIterator::_container*/;
+  variable0 = ((abstract_collection___Container___item_t)CALL(variable0,COLOR_abstract_collection___Container___item))(variable0) /*Container::item*/;
+  goto return_label18;
+  return_label18: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void abstract_collection___ContainerIterator___next(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::ContainerIterator::next (bin/../lib/standard//abstract_collection.nit:159,2--34)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstract_collection___ContainerIterator____is_ok( self) /*ContainerIterator::_is_ok*/ =  TAG_Bool(false);
+  tracehead = trace.prev;
+  return;
+}
+void abstract_collection___ContainerIterator___init(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, "abstract_collection::ContainerIterator::init (bin/../lib/standard//abstract_collection.nit:161,2--40)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ContainerIterator].i]) return;
+  ATTR_abstract_collection___ContainerIterator____container( self) /*ContainerIterator::_container*/ =  variable0 /*c*/;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ContainerIterator].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___ContainerIterator___is_ok(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::ContainerIterator::is_ok (bin/../lib/standard//abstract_collection.nit:163,2--40)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstract_collection___ContainerIterator____is_ok( self) /*ContainerIterator::_is_ok*/;
+}
+void abstract_collection___RemovableCollection___clear(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::RemovableCollection::clear (bin/../lib/standard//abstract_collection.nit:171,2--172:11)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method clear called (bin/../lib/standard//abstract_collection.nit:171,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return;
+}
+void abstract_collection___RemovableCollection___remove(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::RemovableCollection::remove (bin/../lib/standard//abstract_collection.nit:174,2--175:20)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method remove called (bin/../lib/standard//abstract_collection.nit:174,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return;
+}
+void abstract_collection___RemovableCollection___remove_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::RemovableCollection::remove_all (bin/../lib/standard//abstract_collection.nit:177,2--178:59)"};
+  val_t variable0;
+    val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  while (true) { /*while*/
+    variable1 = ((abstract_collection___Collection___has_t)CALL( self,COLOR_abstract_collection___Collection___has))( self,  variable0 /*item*/) /*RemovableCollection::has*/;
+    if (!UNTAG_Bool(variable1)) break; /* while*/
+    ((abstract_collection___RemovableCollection___remove_t)CALL( self,COLOR_abstract_collection___RemovableCollection___remove))( self,  variable0 /*item*/) /*RemovableCollection::remove*/;
+    continue_22: while(0);
+  }
+  break_22: while(0);
+  tracehead = trace.prev;
+  return;
+}
+void abstract_collection___SimpleCollection___add(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::SimpleCollection::add (bin/../lib/standard//abstract_collection.nit:184,2--186:17)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method add called (bin/../lib/standard//abstract_collection.nit:184,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return;
+}
+void abstract_collection___SimpleCollection___add_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::SimpleCollection::add_all (bin/../lib/standard//abstract_collection.nit:188,2--189:81)"};
+  val_t variable0;
+  val_t variable1;
+      val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*coll*/ ==  NIT_NULL /*null*/) || (( variable0 /*coll*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*coll*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*coll*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*coll*/,COLOR_kernel___Object_____eqeq))( variable0 /*coll*/,  NIT_NULL /*null*/) /*Collection::==*/)))))));
+  if (UNTAG_Bool(variable1)) { /*if*/
+    variable1 = ((abstract_collection___Collection___iterator_t)CALL( variable0 /*coll*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*coll*/) /*Collection::iterator*/;
+    while (true) { /*for*/
+      variable2 = ((abstract_collection___Iterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*Iterator::is_ok*/;
+      if (!UNTAG_Bool(variable2)) break; /*for*/
+      variable2 = ((abstract_collection___Iterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*Iterator::item*/;
+      ((abstract_collection___SimpleCollection___add_t)CALL( self,COLOR_abstract_collection___SimpleCollection___add))( self,  variable2 /*i*/) /*SimpleCollection::add*/;
+      continue_24: while(0);
+      ((abstract_collection___Iterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*Iterator::next*/;
+    }
+    break_24: while(0);
+  }
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___Set___has_only(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Set::has_only (bin/../lib/standard//abstract_collection.nit:204,2--212:15)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ((abstract_collection___Collection___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*Set::length*/;
+  variable1 = variable2;
+  variable2 = TAG_Bool(( variable1 /*l*/)==( TAG_Int(1)));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable2 = ((abstract_collection___Collection___has_t)CALL( self,COLOR_abstract_collection___Collection___has))( self,  variable0 /*item*/) /*Set::has*/;
+    variable1 = variable2;
+    goto return_label25;
+  } else { /*if*/
+    variable2 = TAG_Bool(( variable1 /*l*/)==( TAG_Int(0)));
+    if (UNTAG_Bool(variable2)) { /*if*/
+      variable1 =  TAG_Bool(true);
+      goto return_label25;
+    } else { /*if*/
+      variable1 =  TAG_Bool(false);
+      goto return_label25;
+    }
+  }
+  return_label25: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstract_collection___Set___count(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Set::count (bin/../lib/standard//abstract_collection.nit:216,2--222:11)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((abstract_collection___Collection___has_t)CALL( self,COLOR_abstract_collection___Collection___has))( self,  variable0 /*item*/) /*Set::has*/;
+  if (UNTAG_Bool(variable1)) { /*if*/
+    variable1 =  TAG_Int(1);
+    goto return_label26;
+  } else { /*if*/
+    variable1 =  TAG_Int(0);
+    goto return_label26;
+  }
+  return_label26: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+void abstract_collection___Set___remove_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Set::remove_all (bin/../lib/standard//abstract_collection.nit:226,2--227:43)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  ((abstract_collection___RemovableCollection___remove_t)CALL( self,COLOR_abstract_collection___RemovableCollection___remove))( self,  variable0 /*item*/) /*Set::remove*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___Map_____bra(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Map::[] (bin/../lib/standard//abstract_collection.nit:244,2--245:19)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method [] called (bin/../lib/standard//abstract_collection.nit:244,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+void abstract_collection___Map_____braeq(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "abstract_collection::Map::[]= (bin/../lib/standard//abstract_collection.nit:247,2--248:25)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method []= called (bin/../lib/standard//abstract_collection.nit:247,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___Map___has_key(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Map::has_key (bin/../lib/standard//abstract_collection.nit:250,2--251:27)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method has_key called (bin/../lib/standard//abstract_collection.nit:250,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+void abstract_collection___Map___remove_at(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Map::remove_at (bin/../lib/standard//abstract_collection.nit:253,2--254:22)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method remove_at called (bin/../lib/standard//abstract_collection.nit:253,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return;
+}
+void abstract_collection___Map___recover_with(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Map::recover_with (bin/../lib/standard//abstract_collection.nit:256,2--263:9)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ((abstract_collection___Map___iterator_t)CALL( variable0 /*map*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*map*/) /*Map::iterator*/;
+  variable1 = variable2;
+  while (true) { /*while*/
+    variable2 = ((abstract_collection___Iterator___is_ok_t)CALL( variable1 /*i*/,COLOR_abstract_collection___Iterator___is_ok))( variable1 /*i*/) /*MapIterator::is_ok*/;
+    if (!UNTAG_Bool(variable2)) break; /* while*/
+    variable2 = ((abstract_collection___MapIterator___key_t)CALL( variable1 /*i*/,COLOR_abstract_collection___MapIterator___key))( variable1 /*i*/) /*MapIterator::key*/;
+    variable3 = ((abstract_collection___Iterator___item_t)CALL( variable1 /*i*/,COLOR_abstract_collection___Iterator___item))( variable1 /*i*/) /*MapIterator::item*/;
+    ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable2, variable3) /*Map::[]=*/;
+    ((abstract_collection___Iterator___next_t)CALL( variable1 /*i*/,COLOR_abstract_collection___Iterator___next))( variable1 /*i*/) /*MapIterator::next*/;
+    continue_29: while(0);
+  }
+  break_29: while(0);
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___Map___iterator(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Map::iterator (bin/../lib/standard//abstract_collection.nit:267,2--38)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method iterator called (bin/../lib/standard//abstract_collection.nit:267,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___MapIterator___key(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::MapIterator::key (bin/../lib/standard//abstract_collection.nit:273,2--274:12)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method key called (bin/../lib/standard//abstract_collection.nit:273,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+void abstract_collection___MapIterator___item__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::MapIterator::item= (bin/../lib/standard//abstract_collection.nit:276,2--277:19)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method item= called (bin/../lib/standard//abstract_collection.nit:276,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___IndexedCollection___first(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedCollection::first (bin/../lib/standard//abstract_collection.nit:285,2--290:15)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstract_collection___Collection___is_empty_t)CALL( self,COLOR_abstract_collection___Collection___is_empty))( self) /*IndexedCollection::is_empty*/;
+  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable0)))) { fprintf(stderr, "Assert 'not_empty'  failed: bin/../lib/standard//abstract_collection.nit:289,3--32\n"); nit_exit(1);}
+  variable0 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  TAG_Int(0)) /*IndexedCollection::[]*/;
+  goto return_label30;
+  return_label30: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void abstract_collection___IndexedCollection___first__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedCollection::first= (bin/../lib/standard//abstract_collection.nit:293,2--296:18)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self,  TAG_Int(0),  variable0 /*item*/) /*IndexedCollection::[]=*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___IndexedCollection___last(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedCollection::last (bin/../lib/standard//abstract_collection.nit:298,2--303:22)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstract_collection___Collection___is_empty_t)CALL( self,COLOR_abstract_collection___Collection___is_empty))( self) /*IndexedCollection::is_empty*/;
+  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable0)))) { fprintf(stderr, "Assert 'not_empty'  failed: bin/../lib/standard//abstract_collection.nit:302,3--32\n"); nit_exit(1);}
+  variable0 = ((abstract_collection___Collection___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*IndexedCollection::length*/;
+  variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int( TAG_Int(1)));
+  variable0 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable0) /*IndexedCollection::[]*/;
+  goto return_label32;
+  return_label32: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void abstract_collection___IndexedCollection___last__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedCollection::last= (bin/../lib/standard//abstract_collection.nit:306,2--314:17)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ((abstract_collection___Collection___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*IndexedCollection::length*/;
+  variable1 = variable2;
+  variable2 = TAG_Bool(UNTAG_Int( variable1 /*l*/)>UNTAG_Int( TAG_Int(0)));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable2 = TAG_Int(UNTAG_Int( variable1 /*l*/)-UNTAG_Int( TAG_Int(1)));
+    ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable2,  variable0 /*item*/) /*IndexedCollection::[]=*/;
+  } else { /*if*/
+    ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self,  TAG_Int(0),  variable0 /*item*/) /*IndexedCollection::[]=*/;
+  }
+  tracehead = trace.prev;
+  return;
+}
+void abstract_collection___IndexedCollection___add(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedCollection::add (bin/../lib/standard//abstract_collection.nit:318,2--319:28)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  ((abstract_collection___IndexedCollection___push_t)CALL( self,COLOR_abstract_collection___IndexedCollection___push))( self,  variable0 /*e*/) /*IndexedCollection::push*/;
+  tracehead = trace.prev;
+  return;
+}
+void abstract_collection___IndexedCollection___push(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedCollection::push (bin/../lib/standard//abstract_collection.nit:321,2--322:15)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method push called (bin/../lib/standard//abstract_collection.nit:321,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return;
+}
+void abstract_collection___IndexedCollection___append(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedCollection::append (bin/../lib/standard//abstract_collection.nit:324,2--325:81)"};
+  val_t variable0;
+  val_t variable1;
+      val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*coll*/ ==  NIT_NULL /*null*/) || (( variable0 /*coll*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*coll*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*coll*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*coll*/,COLOR_kernel___Object_____eqeq))( variable0 /*coll*/,  NIT_NULL /*null*/) /*Collection::==*/)))))));
+  if (UNTAG_Bool(variable1)) { /*if*/
+    variable1 = ((abstract_collection___Collection___iterator_t)CALL( variable0 /*coll*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*coll*/) /*Collection::iterator*/;
+    while (true) { /*for*/
+      variable2 = ((abstract_collection___Iterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*Iterator::is_ok*/;
+      if (!UNTAG_Bool(variable2)) break; /*for*/
+      variable2 = ((abstract_collection___Iterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*Iterator::item*/;
+      ((abstract_collection___IndexedCollection___push_t)CALL( self,COLOR_abstract_collection___IndexedCollection___push))( self,  variable2 /*i*/) /*IndexedCollection::push*/;
+      continue_36: while(0);
+      ((abstract_collection___Iterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*Iterator::next*/;
+    }
+    break_36: while(0);
+  }
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___IndexedCollection___pop(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedCollection::pop (bin/../lib/standard//abstract_collection.nit:327,2--328:12)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method pop called (bin/../lib/standard//abstract_collection.nit:327,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+void abstract_collection___IndexedCollection___unshift(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedCollection::unshift (bin/../lib/standard//abstract_collection.nit:330,2--331:18)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method unshift called (bin/../lib/standard//abstract_collection.nit:330,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___IndexedCollection___shift(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedCollection::shift (bin/../lib/standard//abstract_collection.nit:333,2--335:14)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method shift called (bin/../lib/standard//abstract_collection.nit:333,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___IndexedCollection___index_of(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedCollection::index_of (bin/../lib/standard//abstract_collection.nit:337,2--346:11)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ((abstract_collection___IndexedCollection___iterator_t)CALL( self,COLOR_abstract_collection___Collection___iterator))( self) /*IndexedCollection::iterator*/;
+  variable1 = variable2;
+  while (true) { /*while*/
+    variable2 = ((abstract_collection___Iterator___is_ok_t)CALL( variable1 /*i*/,COLOR_abstract_collection___Iterator___is_ok))( variable1 /*i*/) /*IndexedIterator::is_ok*/;
+    if (!UNTAG_Bool(variable2)) break; /* while*/
+    variable2 = ((abstract_collection___Iterator___item_t)CALL( variable1 /*i*/,COLOR_abstract_collection___Iterator___item))( variable1 /*i*/) /*IndexedIterator::item*/;
+    variable2 = TAG_Bool((variable2 ==  variable0 /*item*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*item*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable2)) { /*if*/
+      variable2 = ((abstract_collection___IndexedIterator___index_t)CALL( variable1 /*i*/,COLOR_abstract_collection___IndexedIterator___index))( variable1 /*i*/) /*IndexedIterator::index*/;
+      variable1 = variable2;
+      goto return_label37;
+    }
+    ((abstract_collection___Iterator___next_t)CALL( variable1 /*i*/,COLOR_abstract_collection___Iterator___next))( variable1 /*i*/) /*IndexedIterator::next*/;
+    continue_38: while(0);
+  }
+  break_38: while(0);
+  variable2 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
+  variable1 = variable2;
+  goto return_label37;
+  return_label37: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstract_collection___IndexedCollection___iterator(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedCollection::iterator (bin/../lib/standard//abstract_collection.nit:349,2--39)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method iterator called (bin/../lib/standard//abstract_collection.nit:349,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___IndexedIterator___index(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedIterator::index (bin/../lib/standard//abstract_collection.nit:355,2--356:16)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method index called (bin/../lib/standard//abstract_collection.nit:355,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___IndexedIterator___key(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::IndexedIterator::key (bin/../lib/standard//abstract_collection.nit:358,2--359:31)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstract_collection___IndexedIterator___index_t)CALL( self,COLOR_abstract_collection___IndexedIterator___index))( self) /*IndexedIterator::index*/;
+  goto return_label39;
+  return_label39: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstract_collection___CoupleMap___couple_at(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::CoupleMap::couple_at (bin/../lib/standard//abstract_collection.nit:365,2--367:46)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method couple_at called (bin/../lib/standard//abstract_collection.nit:365,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t abstract_collection___CoupleMap_____bra(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::CoupleMap::[] (bin/../lib/standard//abstract_collection.nit:369,2--375:18)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ((abstract_collection___CoupleMap___couple_at_t)CALL( self,COLOR_abstract_collection___CoupleMap___couple_at))( self,  variable0 /*key*/) /*CoupleMap::couple_at*/;
+  variable1 = variable2;
+  variable2 = TAG_Bool(( variable1 /*c*/ ==  NIT_NULL /*null*/) || (( variable1 /*c*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*c*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*c*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*c*/,COLOR_kernel___Object_____eqeq))( variable1 /*c*/,  NIT_NULL /*null*/) /*Couple::==*/)))));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable1 =  NIT_NULL /*null*/;
+    goto return_label40;
+  } else { /*if*/
+    variable2 = ((abstract_collection___Couple___second_t)CALL( variable1 /*c*/,COLOR_abstract_collection___Couple___second))( variable1 /*c*/) /*Couple::second*/;
+    variable1 = variable2;
+    goto return_label40;
+  }
+  return_label40: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstract_collection___CoupleMap___has_key(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::CoupleMap::has_key (bin/../lib/standard//abstract_collection.nit:379,2--57)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((abstract_collection___CoupleMap___couple_at_t)CALL( self,COLOR_abstract_collection___CoupleMap___couple_at))( self,  variable0 /*key*/) /*CoupleMap::couple_at*/;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Couple::==*/)))))));
+  goto return_label41;
+  return_label41: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstract_collection___CoupleMapIterator___item(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::CoupleMapIterator::item (bin/../lib/standard//abstract_collection.nit:387,2--44)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_abstract_collection___CoupleMapIterator____iter( self) /*CoupleMapIterator::_iter*/;
+  variable0 = ((abstract_collection___Iterator___item_t)CALL(variable0,COLOR_abstract_collection___Iterator___item))(variable0) /*Iterator::item*/;
+  variable0 = ((abstract_collection___Couple___second_t)CALL(variable0,COLOR_abstract_collection___Couple___second))(variable0) /*Couple::second*/;
+  goto return_label42;
+  return_label42: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void abstract_collection___CoupleMapIterator___item__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::CoupleMapIterator::item= (bin/../lib/standard//abstract_collection.nit:389,2--45)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_abstract_collection___CoupleMapIterator____iter( self) /*CoupleMapIterator::_iter*/;
+  variable1 = ((abstract_collection___Iterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*Iterator::item*/;
+  ((abstract_collection___Couple___second__eq_t)CALL(variable1,COLOR_abstract_collection___Couple___second__eq))(variable1,  variable0 /*e*/) /*Couple::second=*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___CoupleMapIterator___key(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::CoupleMapIterator::key (bin/../lib/standard//abstract_collection.nit:391,2--42)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_abstract_collection___CoupleMapIterator____iter( self) /*CoupleMapIterator::_iter*/;
+  variable0 = ((abstract_collection___Iterator___item_t)CALL(variable0,COLOR_abstract_collection___Iterator___item))(variable0) /*Iterator::item*/;
+  variable0 = ((abstract_collection___Couple___first_t)CALL(variable0,COLOR_abstract_collection___Couple___first))(variable0) /*Couple::first*/;
+  goto return_label44;
+  return_label44: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstract_collection___CoupleMapIterator___is_ok(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::CoupleMapIterator::is_ok (bin/../lib/standard//abstract_collection.nit:393,2--39)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_abstract_collection___CoupleMapIterator____iter( self) /*CoupleMapIterator::_iter*/;
+  variable0 = ((abstract_collection___Iterator___is_ok_t)CALL(variable0,COLOR_abstract_collection___Iterator___is_ok))(variable0) /*Iterator::is_ok*/;
+  goto return_label45;
+  return_label45: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void abstract_collection___CoupleMapIterator___next(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::CoupleMapIterator::next (bin/../lib/standard//abstract_collection.nit:395,2--398:56)"};
+  val_t variable0;
+    val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_abstract_collection___CoupleMapIterator____iter( self) /*CoupleMapIterator::_iter*/;
+  ((abstract_collection___Iterator___next_t)CALL(variable0,COLOR_abstract_collection___Iterator___next))(variable0) /*Iterator::next*/;
+  while (true) { /*while*/
+    variable0 = ATTR_abstract_collection___CoupleMapIterator____iter( self) /*CoupleMapIterator::_iter*/;
+    variable0 = ((abstract_collection___Iterator___is_ok_t)CALL(variable0,COLOR_abstract_collection___Iterator___is_ok))(variable0) /*Iterator::is_ok*/;
+    variable1 = variable0;
+    if (UNTAG_Bool(variable1)) { /* and */
+      variable1 = ATTR_abstract_collection___CoupleMapIterator____iter( self) /*CoupleMapIterator::_iter*/;
+      variable1 = ((abstract_collection___Iterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*Iterator::item*/;
+      variable1 = TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Couple::==*/)))));
+    }
+    variable0 = variable1;
+    if (!UNTAG_Bool(variable0)) break; /* while*/
+    variable0 = ATTR_abstract_collection___CoupleMapIterator____iter( self) /*CoupleMapIterator::_iter*/;
+    ((abstract_collection___Iterator___next_t)CALL(variable0,COLOR_abstract_collection___Iterator___next))(variable0) /*Iterator::next*/;
+    continue_47: while(0);
+  }
+  break_47: while(0);
+  tracehead = trace.prev;
+  return;
+}
+void abstract_collection___CoupleMapIterator___init(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, "abstract_collection::CoupleMapIterator::init (bin/../lib/standard//abstract_collection.nit:403,2--44)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_CoupleMapIterator].i]) return;
+  ATTR_abstract_collection___CoupleMapIterator____iter( self) /*CoupleMapIterator::_iter*/ =  variable0 /*i*/;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_CoupleMapIterator].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___Couple___first(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Couple::first (bin/../lib/standard//abstract_collection.nit:411,2--412:33)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstract_collection___Couple____first( self) /*Couple::_first*/;
+}
+void abstract_collection___Couple___first__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Couple::first= (bin/../lib/standard//abstract_collection.nit:411,2--412:33)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstract_collection___Couple____first( self) /*Couple::_first*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstract_collection___Couple___second(val_t  self) {
+  struct trace_t trace = {NULL, "abstract_collection::Couple::second (bin/../lib/standard//abstract_collection.nit:414,2--415:34)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstract_collection___Couple____second( self) /*Couple::_second*/;
+}
+void abstract_collection___Couple___second__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstract_collection::Couple::second= (bin/../lib/standard//abstract_collection.nit:414,2--415:34)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstract_collection___Couple____second( self) /*Couple::_second*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+void abstract_collection___Couple___init(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, "abstract_collection::Couple::init (bin/../lib/standard//abstract_collection.nit:417,2--421:13)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Couple].i]) return;
+  ATTR_abstract_collection___Couple____first( self) /*Couple::_first*/ =  variable0 /*f*/;
+  ATTR_abstract_collection___Couple____second( self) /*Couple::_second*/ =  variable1 /*s*/;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Couple].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
diff --git a/c_src/abstract_collection._sep.h b/c_src/abstract_collection._sep.h
new file mode 100644 (file)
index 0000000..491d28d
--- /dev/null
@@ -0,0 +1,288 @@
+#ifndef abstract_collection__sep
+#define abstract_collection__sep
+#include "kernel._sep.h"
+#include <nit_common.h>
+
+extern const classtable_elt_t VFT_Collection[];
+
+extern const classtable_elt_t VFT_NaiveCollection[];
+
+extern const classtable_elt_t VFT_Iterator[];
+
+extern const classtable_elt_t VFT_Container[];
+
+extern const classtable_elt_t VFT_ContainerIterator[];
+
+extern const classtable_elt_t VFT_RemovableCollection[];
+
+extern const classtable_elt_t VFT_SimpleCollection[];
+
+extern const classtable_elt_t VFT_Set[];
+
+extern const classtable_elt_t VFT_Map[];
+
+extern const classtable_elt_t VFT_MapIterator[];
+
+extern const classtable_elt_t VFT_IndexedCollection[];
+
+extern const classtable_elt_t VFT_IndexedIterator[];
+
+extern const classtable_elt_t VFT_CoupleMap[];
+
+extern const classtable_elt_t VFT_CoupleMapIterator[];
+
+extern const classtable_elt_t VFT_Couple[];
+extern const int SFT_abstract_collection[];
+#define ID_Collection SFT_abstract_collection[0]
+#define COLOR_Collection SFT_abstract_collection[1]
+#define INIT_TABLE_POS_Collection SFT_abstract_collection[2]
+#define COLOR_abstract_collection___Collection___iterator SFT_abstract_collection[3]
+#define COLOR_abstract_collection___Collection___is_empty SFT_abstract_collection[4]
+#define COLOR_abstract_collection___Collection___length SFT_abstract_collection[5]
+#define COLOR_abstract_collection___Collection___has SFT_abstract_collection[6]
+#define COLOR_abstract_collection___Collection___has_only SFT_abstract_collection[7]
+#define COLOR_abstract_collection___Collection___count SFT_abstract_collection[8]
+#define COLOR_abstract_collection___Collection___first SFT_abstract_collection[9]
+#define ID_NaiveCollection SFT_abstract_collection[10]
+#define COLOR_NaiveCollection SFT_abstract_collection[11]
+#define INIT_TABLE_POS_NaiveCollection SFT_abstract_collection[12]
+#define ID_Iterator SFT_abstract_collection[13]
+#define COLOR_Iterator SFT_abstract_collection[14]
+#define INIT_TABLE_POS_Iterator SFT_abstract_collection[15]
+#define COLOR_abstract_collection___Iterator___item SFT_abstract_collection[16]
+#define COLOR_abstract_collection___Iterator___next SFT_abstract_collection[17]
+#define COLOR_abstract_collection___Iterator___is_ok SFT_abstract_collection[18]
+#define ID_Container SFT_abstract_collection[19]
+#define COLOR_Container SFT_abstract_collection[20]
+#define COLOR_abstract_collection___Container____item SFT_abstract_collection[21]
+#define INIT_TABLE_POS_Container SFT_abstract_collection[22]
+#define COLOR_abstract_collection___Container___init SFT_abstract_collection[23]
+#define COLOR_abstract_collection___Container___item SFT_abstract_collection[24]
+#define COLOR_abstract_collection___Container___item__eq SFT_abstract_collection[25]
+#define ID_ContainerIterator SFT_abstract_collection[26]
+#define COLOR_ContainerIterator SFT_abstract_collection[27]
+#define COLOR_abstract_collection___ContainerIterator____is_ok SFT_abstract_collection[28]
+#define COLOR_abstract_collection___ContainerIterator____container SFT_abstract_collection[29]
+#define INIT_TABLE_POS_ContainerIterator SFT_abstract_collection[30]
+#define COLOR_abstract_collection___ContainerIterator___init SFT_abstract_collection[31]
+#define ID_RemovableCollection SFT_abstract_collection[32]
+#define COLOR_RemovableCollection SFT_abstract_collection[33]
+#define INIT_TABLE_POS_RemovableCollection SFT_abstract_collection[34]
+#define COLOR_abstract_collection___RemovableCollection___clear SFT_abstract_collection[35]
+#define COLOR_abstract_collection___RemovableCollection___remove SFT_abstract_collection[36]
+#define COLOR_abstract_collection___RemovableCollection___remove_all SFT_abstract_collection[37]
+#define ID_SimpleCollection SFT_abstract_collection[38]
+#define COLOR_SimpleCollection SFT_abstract_collection[39]
+#define INIT_TABLE_POS_SimpleCollection SFT_abstract_collection[40]
+#define COLOR_abstract_collection___SimpleCollection___add SFT_abstract_collection[41]
+#define COLOR_abstract_collection___SimpleCollection___add_all SFT_abstract_collection[42]
+#define ID_Set SFT_abstract_collection[43]
+#define COLOR_Set SFT_abstract_collection[44]
+#define INIT_TABLE_POS_Set SFT_abstract_collection[45]
+#define ID_Map SFT_abstract_collection[46]
+#define COLOR_Map SFT_abstract_collection[47]
+#define INIT_TABLE_POS_Map SFT_abstract_collection[48]
+#define COLOR_abstract_collection___Map_____bra SFT_abstract_collection[49]
+#define COLOR_abstract_collection___Map_____braeq SFT_abstract_collection[50]
+#define COLOR_abstract_collection___Map___has_key SFT_abstract_collection[51]
+#define COLOR_abstract_collection___Map___remove_at SFT_abstract_collection[52]
+#define COLOR_abstract_collection___Map___recover_with SFT_abstract_collection[53]
+#define ID_MapIterator SFT_abstract_collection[54]
+#define COLOR_MapIterator SFT_abstract_collection[55]
+#define INIT_TABLE_POS_MapIterator SFT_abstract_collection[56]
+#define COLOR_abstract_collection___MapIterator___key SFT_abstract_collection[57]
+#define COLOR_abstract_collection___MapIterator___item__eq SFT_abstract_collection[58]
+#define ID_IndexedCollection SFT_abstract_collection[59]
+#define COLOR_IndexedCollection SFT_abstract_collection[60]
+#define INIT_TABLE_POS_IndexedCollection SFT_abstract_collection[61]
+#define COLOR_abstract_collection___IndexedCollection___first__eq SFT_abstract_collection[62]
+#define COLOR_abstract_collection___IndexedCollection___last SFT_abstract_collection[63]
+#define COLOR_abstract_collection___IndexedCollection___last__eq SFT_abstract_collection[64]
+#define COLOR_abstract_collection___IndexedCollection___push SFT_abstract_collection[65]
+#define COLOR_abstract_collection___IndexedCollection___append SFT_abstract_collection[66]
+#define COLOR_abstract_collection___IndexedCollection___pop SFT_abstract_collection[67]
+#define COLOR_abstract_collection___IndexedCollection___unshift SFT_abstract_collection[68]
+#define COLOR_abstract_collection___IndexedCollection___shift SFT_abstract_collection[69]
+#define COLOR_abstract_collection___IndexedCollection___index_of SFT_abstract_collection[70]
+#define ID_IndexedIterator SFT_abstract_collection[71]
+#define COLOR_IndexedIterator SFT_abstract_collection[72]
+#define INIT_TABLE_POS_IndexedIterator SFT_abstract_collection[73]
+#define COLOR_abstract_collection___IndexedIterator___index SFT_abstract_collection[74]
+#define ID_CoupleMap SFT_abstract_collection[75]
+#define COLOR_CoupleMap SFT_abstract_collection[76]
+#define INIT_TABLE_POS_CoupleMap SFT_abstract_collection[77]
+#define COLOR_abstract_collection___CoupleMap___couple_at SFT_abstract_collection[78]
+#define ID_CoupleMapIterator SFT_abstract_collection[79]
+#define COLOR_CoupleMapIterator SFT_abstract_collection[80]
+#define COLOR_abstract_collection___CoupleMapIterator____iter SFT_abstract_collection[81]
+#define INIT_TABLE_POS_CoupleMapIterator SFT_abstract_collection[82]
+#define COLOR_abstract_collection___CoupleMapIterator___init SFT_abstract_collection[83]
+#define ID_Couple SFT_abstract_collection[84]
+#define COLOR_Couple SFT_abstract_collection[85]
+#define COLOR_abstract_collection___Couple____first SFT_abstract_collection[86]
+#define COLOR_abstract_collection___Couple____second SFT_abstract_collection[87]
+#define INIT_TABLE_POS_Couple SFT_abstract_collection[88]
+#define COLOR_abstract_collection___Couple___first SFT_abstract_collection[89]
+#define COLOR_abstract_collection___Couple___first__eq SFT_abstract_collection[90]
+#define COLOR_abstract_collection___Couple___second SFT_abstract_collection[91]
+#define COLOR_abstract_collection___Couple___second__eq SFT_abstract_collection[92]
+#define COLOR_abstract_collection___Couple___init SFT_abstract_collection[93]
+typedef val_t (* abstract_collection___Collection___iterator_t)(val_t  self);
+val_t abstract_collection___Collection___iterator(val_t  self);
+typedef val_t (* abstract_collection___Collection___is_empty_t)(val_t  self);
+val_t abstract_collection___Collection___is_empty(val_t  self);
+typedef val_t (* abstract_collection___Collection___length_t)(val_t  self);
+val_t abstract_collection___Collection___length(val_t  self);
+typedef val_t (* abstract_collection___Collection___has_t)(val_t  self, val_t  param0);
+val_t abstract_collection___Collection___has(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___Collection___has_only_t)(val_t  self, val_t  param0);
+val_t abstract_collection___Collection___has_only(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___Collection___count_t)(val_t  self, val_t  param0);
+val_t abstract_collection___Collection___count(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___Collection___first_t)(val_t  self);
+val_t abstract_collection___Collection___first(val_t  self);
+typedef val_t (* abstract_collection___NaiveCollection___is_empty_t)(val_t  self);
+val_t abstract_collection___NaiveCollection___is_empty(val_t  self);
+typedef val_t (* abstract_collection___NaiveCollection___length_t)(val_t  self);
+val_t abstract_collection___NaiveCollection___length(val_t  self);
+typedef val_t (* abstract_collection___NaiveCollection___has_t)(val_t  self, val_t  param0);
+val_t abstract_collection___NaiveCollection___has(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___NaiveCollection___has_only_t)(val_t  self, val_t  param0);
+val_t abstract_collection___NaiveCollection___has_only(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___NaiveCollection___count_t)(val_t  self, val_t  param0);
+val_t abstract_collection___NaiveCollection___count(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___NaiveCollection___first_t)(val_t  self);
+val_t abstract_collection___NaiveCollection___first(val_t  self);
+typedef val_t (* abstract_collection___Iterator___item_t)(val_t  self);
+val_t abstract_collection___Iterator___item(val_t  self);
+typedef void (* abstract_collection___Iterator___next_t)(val_t  self);
+void abstract_collection___Iterator___next(val_t  self);
+typedef val_t (* abstract_collection___Iterator___is_ok_t)(val_t  self);
+val_t abstract_collection___Iterator___is_ok(val_t  self);
+typedef val_t (* abstract_collection___Container___first_t)(val_t  self);
+val_t abstract_collection___Container___first(val_t  self);
+typedef val_t (* abstract_collection___Container___is_empty_t)(val_t  self);
+val_t abstract_collection___Container___is_empty(val_t  self);
+typedef val_t (* abstract_collection___Container___length_t)(val_t  self);
+val_t abstract_collection___Container___length(val_t  self);
+typedef val_t (* abstract_collection___Container___has_t)(val_t  self, val_t  param0);
+val_t abstract_collection___Container___has(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___Container___has_only_t)(val_t  self, val_t  param0);
+val_t abstract_collection___Container___has_only(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___Container___count_t)(val_t  self, val_t  param0);
+val_t abstract_collection___Container___count(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___Container___iterator_t)(val_t  self);
+val_t abstract_collection___Container___iterator(val_t  self);
+typedef void (* abstract_collection___Container___init_t)(val_t  self, val_t  param0, int* init_table);
+void abstract_collection___Container___init(val_t  self, val_t  param0, int* init_table);
+val_t NEW_abstract_collection___Container___init(val_t  param0);
+#define ATTR_abstract_collection___Container____item(recv) ATTR(recv, COLOR_abstract_collection___Container____item)
+typedef val_t (* abstract_collection___Container___item_t)(val_t  self);
+val_t abstract_collection___Container___item(val_t  self);
+typedef void (* abstract_collection___Container___item__eq_t)(val_t  self, val_t  param0);
+void abstract_collection___Container___item__eq(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___ContainerIterator___item_t)(val_t  self);
+val_t abstract_collection___ContainerIterator___item(val_t  self);
+typedef void (* abstract_collection___ContainerIterator___next_t)(val_t  self);
+void abstract_collection___ContainerIterator___next(val_t  self);
+typedef void (* abstract_collection___ContainerIterator___init_t)(val_t  self, val_t  param0, int* init_table);
+void abstract_collection___ContainerIterator___init(val_t  self, val_t  param0, int* init_table);
+val_t NEW_abstract_collection___ContainerIterator___init(val_t  param0);
+#define ATTR_abstract_collection___ContainerIterator____is_ok(recv) ATTR(recv, COLOR_abstract_collection___ContainerIterator____is_ok)
+typedef val_t (* abstract_collection___ContainerIterator___is_ok_t)(val_t  self);
+val_t abstract_collection___ContainerIterator___is_ok(val_t  self);
+#define ATTR_abstract_collection___ContainerIterator____container(recv) ATTR(recv, COLOR_abstract_collection___ContainerIterator____container)
+typedef void (* abstract_collection___RemovableCollection___clear_t)(val_t  self);
+void abstract_collection___RemovableCollection___clear(val_t  self);
+typedef void (* abstract_collection___RemovableCollection___remove_t)(val_t  self, val_t  param0);
+void abstract_collection___RemovableCollection___remove(val_t  self, val_t  param0);
+typedef void (* abstract_collection___RemovableCollection___remove_all_t)(val_t  self, val_t  param0);
+void abstract_collection___RemovableCollection___remove_all(val_t  self, val_t  param0);
+typedef void (* abstract_collection___SimpleCollection___add_t)(val_t  self, val_t  param0);
+void abstract_collection___SimpleCollection___add(val_t  self, val_t  param0);
+typedef void (* abstract_collection___SimpleCollection___add_all_t)(val_t  self, val_t  param0);
+void abstract_collection___SimpleCollection___add_all(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___Set___has_only_t)(val_t  self, val_t  param0);
+val_t abstract_collection___Set___has_only(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___Set___count_t)(val_t  self, val_t  param0);
+val_t abstract_collection___Set___count(val_t  self, val_t  param0);
+typedef void (* abstract_collection___Set___remove_all_t)(val_t  self, val_t  param0);
+void abstract_collection___Set___remove_all(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___Map_____bra_t)(val_t  self, val_t  param0);
+val_t abstract_collection___Map_____bra(val_t  self, val_t  param0);
+typedef void (* abstract_collection___Map_____braeq_t)(val_t  self, val_t  param0, val_t  param1);
+void abstract_collection___Map_____braeq(val_t  self, val_t  param0, val_t  param1);
+typedef val_t (* abstract_collection___Map___has_key_t)(val_t  self, val_t  param0);
+val_t abstract_collection___Map___has_key(val_t  self, val_t  param0);
+typedef void (* abstract_collection___Map___remove_at_t)(val_t  self, val_t  param0);
+void abstract_collection___Map___remove_at(val_t  self, val_t  param0);
+typedef void (* abstract_collection___Map___recover_with_t)(val_t  self, val_t  param0);
+void abstract_collection___Map___recover_with(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___Map___iterator_t)(val_t  self);
+val_t abstract_collection___Map___iterator(val_t  self);
+typedef val_t (* abstract_collection___MapIterator___key_t)(val_t  self);
+val_t abstract_collection___MapIterator___key(val_t  self);
+typedef void (* abstract_collection___MapIterator___item__eq_t)(val_t  self, val_t  param0);
+void abstract_collection___MapIterator___item__eq(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___IndexedCollection___first_t)(val_t  self);
+val_t abstract_collection___IndexedCollection___first(val_t  self);
+typedef void (* abstract_collection___IndexedCollection___first__eq_t)(val_t  self, val_t  param0);
+void abstract_collection___IndexedCollection___first__eq(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___IndexedCollection___last_t)(val_t  self);
+val_t abstract_collection___IndexedCollection___last(val_t  self);
+typedef void (* abstract_collection___IndexedCollection___last__eq_t)(val_t  self, val_t  param0);
+void abstract_collection___IndexedCollection___last__eq(val_t  self, val_t  param0);
+typedef void (* abstract_collection___IndexedCollection___add_t)(val_t  self, val_t  param0);
+void abstract_collection___IndexedCollection___add(val_t  self, val_t  param0);
+typedef void (* abstract_collection___IndexedCollection___push_t)(val_t  self, val_t  param0);
+void abstract_collection___IndexedCollection___push(val_t  self, val_t  param0);
+typedef void (* abstract_collection___IndexedCollection___append_t)(val_t  self, val_t  param0);
+void abstract_collection___IndexedCollection___append(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___IndexedCollection___pop_t)(val_t  self);
+val_t abstract_collection___IndexedCollection___pop(val_t  self);
+typedef void (* abstract_collection___IndexedCollection___unshift_t)(val_t  self, val_t  param0);
+void abstract_collection___IndexedCollection___unshift(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___IndexedCollection___shift_t)(val_t  self);
+val_t abstract_collection___IndexedCollection___shift(val_t  self);
+typedef val_t (* abstract_collection___IndexedCollection___index_of_t)(val_t  self, val_t  param0);
+val_t abstract_collection___IndexedCollection___index_of(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___IndexedCollection___iterator_t)(val_t  self);
+val_t abstract_collection___IndexedCollection___iterator(val_t  self);
+typedef val_t (* abstract_collection___IndexedIterator___index_t)(val_t  self);
+val_t abstract_collection___IndexedIterator___index(val_t  self);
+typedef val_t (* abstract_collection___IndexedIterator___key_t)(val_t  self);
+val_t abstract_collection___IndexedIterator___key(val_t  self);
+typedef val_t (* abstract_collection___CoupleMap___couple_at_t)(val_t  self, val_t  param0);
+val_t abstract_collection___CoupleMap___couple_at(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___CoupleMap_____bra_t)(val_t  self, val_t  param0);
+val_t abstract_collection___CoupleMap_____bra(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___CoupleMap___has_key_t)(val_t  self, val_t  param0);
+val_t abstract_collection___CoupleMap___has_key(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___CoupleMapIterator___item_t)(val_t  self);
+val_t abstract_collection___CoupleMapIterator___item(val_t  self);
+typedef void (* abstract_collection___CoupleMapIterator___item__eq_t)(val_t  self, val_t  param0);
+void abstract_collection___CoupleMapIterator___item__eq(val_t  self, val_t  param0);
+typedef val_t (* abstract_collection___CoupleMapIterator___key_t)(val_t  self);
+val_t abstract_collection___CoupleMapIterator___key(val_t  self);
+typedef val_t (* abstract_collection___CoupleMapIterator___is_ok_t)(val_t  self);
+val_t abstract_collection___CoupleMapIterator___is_ok(val_t  self);
+typedef void (* abstract_collection___CoupleMapIterator___next_t)(val_t  self);
+void abstract_collection___CoupleMapIterator___next(val_t  self);
+#define ATTR_abstract_collection___CoupleMapIterator____iter(recv) ATTR(recv, COLOR_abstract_collection___CoupleMapIterator____iter)
+typedef void (* abstract_collection___CoupleMapIterator___init_t)(val_t  self, val_t  param0, int* init_table);
+void abstract_collection___CoupleMapIterator___init(val_t  self, val_t  param0, int* init_table);
+val_t NEW_abstract_collection___CoupleMapIterator___init(val_t  param0);
+#define ATTR_abstract_collection___Couple____first(recv) ATTR(recv, COLOR_abstract_collection___Couple____first)
+typedef val_t (* abstract_collection___Couple___first_t)(val_t  self);
+val_t abstract_collection___Couple___first(val_t  self);
+typedef void (* abstract_collection___Couple___first__eq_t)(val_t  self, val_t  param0);
+void abstract_collection___Couple___first__eq(val_t  self, val_t  param0);
+#define ATTR_abstract_collection___Couple____second(recv) ATTR(recv, COLOR_abstract_collection___Couple____second)
+typedef val_t (* abstract_collection___Couple___second_t)(val_t  self);
+val_t abstract_collection___Couple___second(val_t  self);
+typedef void (* abstract_collection___Couple___second__eq_t)(val_t  self, val_t  param0);
+void abstract_collection___Couple___second__eq(val_t  self, val_t  param0);
+typedef void (* abstract_collection___Couple___init_t)(val_t  self, val_t  param0, val_t  param1, int* init_table);
+void abstract_collection___Couple___init(val_t  self, val_t  param0, val_t  param1, int* init_table);
+val_t NEW_abstract_collection___Couple___init(val_t  param0, val_t  param1);
+#endif
diff --git a/c_src/abstractmetamodel._sep.c b/c_src/abstractmetamodel._sep.c
new file mode 100644 (file)
index 0000000..3f656b5
--- /dev/null
@@ -0,0 +1,1428 @@
+#include "abstractmetamodel._sep.h"
+void abstractmetamodel___MMContext___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMContext::init (src/metamodel//abstractmetamodel.nit:26,2--5)"};
+  trace.prev = tracehead; tracehead = &trace;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMContext].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMContext].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMContext___module_hierarchy(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMContext::module_hierarchy (src/metamodel//abstractmetamodel.nit:28,2--29:84)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMContext____module_hierarchy( self) /*MMContext::_module_hierarchy*/;
+}
+val_t abstractmetamodel___MMContext___class_hierarchy(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMContext::class_hierarchy (src/metamodel//abstractmetamodel.nit:31,2--33:91)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMContext____class_hierarchy( self) /*MMContext::_class_hierarchy*/;
+}
+val_t abstractmetamodel___MMContext___modules(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMContext::modules (src/metamodel//abstractmetamodel.nit:38,2--39:61)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMContext____modules( self) /*MMContext::_modules*/;
+}
+void abstractmetamodel___MMContext___add_module(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMContext::add_module (src/metamodel//abstractmetamodel.nit:41,2--48:40)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*supers*/ ==  NIT_NULL /*null*/) || (( variable1 /*supers*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable1 /*supers*/,COLOR_kernel___Object_____eqeq))( variable1 /*supers*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:44,3--23\n"); nit_exit(1);}
+  variable2 = ATTR_abstractmetamodel___MMContext____module_hierarchy( self) /*MMContext::_module_hierarchy*/;
+  variable3 = ATTR_abstractmetamodel___MMContext____module_hierarchy( self) /*MMContext::_module_hierarchy*/;
+  variable3 = ((partial_order___PartialOrder___select_smallests_t)CALL(variable3,COLOR_partial_order___PartialOrder___select_smallests))(variable3,  variable1 /*supers*/) /*PartialOrder::select_smallests*/;
+  ((partial_order___PartialOrder___add_t)CALL(variable2,COLOR_partial_order___PartialOrder___add))(variable2,  variable0 /*module*/, variable3) /*PartialOrder::add*/;
+  variable2 = ((abstractmetamodel___MMModule___name_t)CALL( variable0 /*module*/,COLOR_abstractmetamodel___MMModule___name))( variable0 /*module*/) /*MMModule::name*/;
+  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable2 ==  NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  NIT_NULL /*null*/) /*Symbol::==*/)))))));
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:46,3--28\n"); nit_exit(1);}
+  variable2 = ATTR_abstractmetamodel___MMContext____modules( self) /*MMContext::_modules*/;
+  ((array___AbstractArray___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2,  variable0 /*module*/) /*Array::add*/;
+  variable2 = ATTR_abstractmetamodel___MMContext____module_hierarchy( self) /*MMContext::_module_hierarchy*/;
+  variable2 = ((partial_order___PartialOrder_____bra_t)CALL(variable2,COLOR_partial_order___PartialOrder_____bra))(variable2,  variable0 /*module*/) /*PartialOrder::[]*/;
+  ATTR_abstractmetamodel___MMModule____mhe( variable0 /*module*/) /*MMModule::_mhe*/ = variable2;
+  tracehead = trace.prev;
+  return;
+}
+void abstractmetamodel___MMContext___add_global_class(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMContext::add_global_class (src/metamodel//abstractmetamodel.nit:51,2--52:73)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_abstractmetamodel___MMContext____global_classes( self) /*MMContext::_global_classes*/;
+  ((array___AbstractArray___add_t)CALL(variable1,COLOR_abstract_collection___SimpleCollection___add))(variable1,  variable0 /*c*/) /*Array::add*/;
+  tracehead = trace.prev;
+  return;
+}
+void abstractmetamodel___MMContext___add_local_class(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMContext::add_local_class (src/metamodel//abstractmetamodel.nit:54,2--71:14)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  val_t variable4;
+    val_t variable5;
+    val_t variable6;
+        val_t variable7;
+        val_t variable8;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*sup*/ ==  NIT_NULL /*null*/) || (( variable1 /*sup*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable1 /*sup*/,COLOR_kernel___Object_____eqeq))( variable1 /*sup*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:57,3--20\n"); nit_exit(1);}
+  variable3 = NEW_array___Array___init(); /*new Array[MMLocalClass]*/
+  variable2 = variable3;
+  variable4 = NEW_array___Array___init(); /*new Array[String]*/
+  variable3 = variable4;
+  variable4 = ((array___AbstractArray___iterator_t)CALL( variable1 /*sup*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*sup*/) /*Array::iterator*/;
+  while (true) { /*for*/
+    variable5 = ((array___ArrayIterator___is_ok_t)CALL(variable4,COLOR_abstract_collection___Iterator___is_ok))(variable4) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable5)) break; /*for*/
+    variable5 = ((array___ArrayIterator___item_t)CALL(variable4,COLOR_abstract_collection___Iterator___item))(variable4) /*ArrayIterator::item*/;
+    variable6 = TAG_Bool(( variable5 /*s*/==NIT_NULL) || VAL_ISA( variable5 /*s*/, COLOR_MMConcreteClass, ID_MMConcreteClass)) /*cast MMConcreteClass*/;
+    if (UNTAG_Bool(variable6)) { /*if*/
+      ((array___AbstractArray___add_t)CALL( variable2 /*csup*/,COLOR_abstract_collection___SimpleCollection___add))( variable2 /*csup*/,  variable5 /*s*/) /*Array::add*/;
+    } else { /*if*/
+      variable6 = ((abstractmetamodel___MMLocalClass___che_t)CALL( variable5 /*s*/,COLOR_abstractmetamodel___MMLocalClass___che))( variable5 /*s*/) /*MMLocalClass::che*/;
+      variable6 = ((partial_order___PartialOrderElement___direct_greaters_t)CALL(variable6,COLOR_partial_order___PartialOrderElement___direct_greaters))(variable6) /*PartialOrderElement::direct_greaters*/;
+      variable6 = ((array___AbstractArray___iterator_t)CALL(variable6,COLOR_abstract_collection___Collection___iterator))(variable6) /*Array::iterator*/;
+      while (true) { /*for*/
+        variable7 = ((array___ArrayIterator___is_ok_t)CALL(variable6,COLOR_abstract_collection___Iterator___is_ok))(variable6) /*ArrayIterator::is_ok*/;
+        if (!UNTAG_Bool(variable7)) break; /*for*/
+        variable7 = ((array___ArrayIterator___item_t)CALL(variable6,COLOR_abstract_collection___Iterator___item))(variable6) /*ArrayIterator::item*/;
+        variable8 = ((array___AbstractArray___has_t)CALL( variable2 /*csup*/,COLOR_abstract_collection___Collection___has))( variable2 /*csup*/,  variable7 /*ss*/) /*Array::has*/;
+        if (UNTAG_Bool(variable8)) { /*if*/
+          goto continue_5;
+        }
+        ((array___AbstractArray___add_t)CALL( variable2 /*csup*/,COLOR_abstract_collection___SimpleCollection___add))( variable2 /*csup*/,  variable7 /*ss*/) /*Array::add*/;
+        continue_5: while(0);
+        ((array___ArrayIterator___next_t)CALL(variable6,COLOR_abstract_collection___Iterator___next))(variable6) /*ArrayIterator::next*/;
+      }
+      break_5: while(0);
+    }
+    continue_4: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*ArrayIterator::next*/;
+  }
+  break_4: while(0);
+  variable5 = ATTR_abstractmetamodel___MMContext____class_hierarchy( self) /*MMContext::_class_hierarchy*/;
+  variable5 = ((partial_order___PartialOrder___add_t)CALL(variable5,COLOR_partial_order___PartialOrder___add))(variable5,  variable0 /*c*/,  variable2 /*csup*/) /*PartialOrder::add*/;
+  variable4 = variable5;
+  ATTR_abstractmetamodel___MMLocalClass____che( variable0 /*c*/) /*MMLocalClass::_che*/ =  variable4 /*che*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMDirectory___name(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMDirectory::name (src/metamodel//abstractmetamodel.nit:77,2--78:28)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMDirectory____name( self) /*MMDirectory::_name*/;
+}
+val_t abstractmetamodel___MMDirectory___path(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMDirectory::path (src/metamodel//abstractmetamodel.nit:80,2--81:28)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMDirectory____path( self) /*MMDirectory::_path*/;
+}
+val_t abstractmetamodel___MMDirectory___parent(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMDirectory::parent (src/metamodel//abstractmetamodel.nit:83,2--85:35)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMDirectory____parent( self) /*MMDirectory::_parent*/;
+}
+val_t abstractmetamodel___MMDirectory___owner(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMDirectory::owner (src/metamodel//abstractmetamodel.nit:87,2--88:40)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMDirectory____owner( self) /*MMDirectory::_owner*/;
+}
+void abstractmetamodel___MMDirectory___owner__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMDirectory::owner= (src/metamodel//abstractmetamodel.nit:87,2--88:40)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstractmetamodel___MMDirectory____owner( self) /*MMDirectory::_owner*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMDirectory___modules(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMDirectory::modules (src/metamodel//abstractmetamodel.nit:90,2--91:77)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMDirectory____modules( self) /*MMDirectory::_modules*/;
+}
+void abstractmetamodel___MMDirectory___add_module(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMDirectory::add_module (src/metamodel//abstractmetamodel.nit:93,2--97:32)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_abstractmetamodel___MMDirectory____modules( self) /*MMDirectory::_modules*/;
+  variable2 = ((abstractmetamodel___MMModule___name_t)CALL( variable0 /*module*/,COLOR_abstractmetamodel___MMModule___name))( variable0 /*module*/) /*MMModule::name*/;
+  variable1 = ((abstract_collection___Map___has_key_t)CALL(variable1,COLOR_abstract_collection___Map___has_key))(variable1, variable2) /*Map::has_key*/;
+  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable1)))) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:96,3--41\n"); nit_exit(1);}
+  variable1 = ATTR_abstractmetamodel___MMDirectory____modules( self) /*MMDirectory::_modules*/;
+  variable2 = ((abstractmetamodel___MMModule___name_t)CALL( variable0 /*module*/,COLOR_abstractmetamodel___MMModule___name))( variable0 /*module*/) /*MMModule::name*/;
+  ((abstract_collection___Map_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1, variable2,  variable0 /*module*/) /*Map::[]=*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMDirectory___dhe(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMDirectory::dhe (src/metamodel//abstractmetamodel.nit:100,2--101:52)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMDirectory____dhe( self) /*MMDirectory::_dhe*/;
+}
+void abstractmetamodel___MMDirectory___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMDirectory::init (src/metamodel//abstractmetamodel.nit:103,2--106:18)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 =  param2;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMDirectory].i]) return;
+  ATTR_abstractmetamodel___MMDirectory____name( self) /*MMDirectory::_name*/ =  variable0 /*name*/;
+  ATTR_abstractmetamodel___MMDirectory____path( self) /*MMDirectory::_path*/ =  variable1 /*path*/;
+  ATTR_abstractmetamodel___MMDirectory____parent( self) /*MMDirectory::_parent*/ =  variable2 /*parent*/;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMDirectory].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMDirectory___full_name_for(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMDirectory::full_name_for (src/metamodel//abstractmetamodel.nit:109,2--111:41)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  val_t variable4;
+  val_t variable5;
+  val_t variable6;
+  val_t variable7;
+  val_t variable8;
+  val_t variable9;
+  val_t variable10;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = NEW_string___String___init(); /*new String*/
+  variable2 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+  variable3 = variable2;
+  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
+  variable4 = ((abstractmetamodel___MMDirectory___name_t)CALL( self,COLOR_abstractmetamodel___MMDirectory___name))( self) /*MMDirectory::name*/;
+  variable5 = variable4;
+  variable5 = ((string___String___to_s_t)CALL(variable5,COLOR_string___Object___to_s))(variable5) /*String::to_s*/;
+  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable5) /*String::append*/;
+  variable6 = NEW_string___String___with_native(BOX_NativeString("/"), TAG_Int(1)); /*new String*/
+  variable7 = variable6;
+  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable7) /*String::append*/;
+  variable8 =  variable0 /*module_name*/;
+  variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
+  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable8) /*String::append*/;
+  variable9 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+  variable10 = variable9;
+  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable10) /*String::append*/;
+  variable1 = ((symbol___String___to_symbol_t)CALL(variable1,COLOR_symbol___String___to_symbol))(variable1) /*String::to_symbol*/;
+  goto return_label8;
+  return_label8: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstractmetamodel___MMModule___context(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::context (src/metamodel//abstractmetamodel.nit:117,2--118:34)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMModule____context( self) /*MMModule::_context*/;
+}
+val_t abstractmetamodel___MMModule___name(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::name (src/metamodel//abstractmetamodel.nit:120,2--121:28)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMModule____name( self) /*MMModule::_name*/;
+}
+val_t abstractmetamodel___MMModule___full_name(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::full_name (src/metamodel//abstractmetamodel.nit:123,2--124:33)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMModule____full_name( self) /*MMModule::_full_name*/;
+}
+val_t abstractmetamodel___MMModule___directory(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::directory (src/metamodel//abstractmetamodel.nit:126,2--127:38)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMModule____directory( self) /*MMModule::_directory*/;
+}
+val_t abstractmetamodel___MMModule___mhe(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::mhe (src/metamodel//abstractmetamodel.nit:129,2--130:49)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMModule____mhe( self) /*MMModule::_mhe*/;
+}
+val_t abstractmetamodel___MMModule___global_classes(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::global_classes (src/metamodel//abstractmetamodel.nit:132,2--133:78)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMModule____global_classes( self) /*MMModule::_global_classes*/;
+}
+val_t abstractmetamodel___MMModule___local_classes(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::local_classes (src/metamodel//abstractmetamodel.nit:135,2--136:75)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMModule____local_classes( self) /*MMModule::_local_classes*/;
+}
+val_t abstractmetamodel___MMModule___class_specialization_hierarchy(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::class_specialization_hierarchy (src/metamodel//abstractmetamodel.nit:138,2--139:106)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy( self) /*MMModule::_class_specialization_hierarchy*/;
+}
+val_t abstractmetamodel___MMModule___explicit_imported_modules(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::explicit_imported_modules (src/metamodel//abstractmetamodel.nit:150,2--151:79)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMModule____explicit_imported_modules( self) /*MMModule::_explicit_imported_modules*/;
+}
+void abstractmetamodel___MMModule___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::init (src/metamodel//abstractmetamodel.nit:159,2--168:38)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 =  param2;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMModule].i]) return;
+  ATTR_abstractmetamodel___MMModule____name( self) /*MMModule::_name*/ =  variable0 /*name*/;
+  ATTR_abstractmetamodel___MMModule____directory( self) /*MMModule::_directory*/ =  variable1 /*dir*/;
+  ATTR_abstractmetamodel___MMModule____context( self) /*MMModule::_context*/ =  variable2 /*context*/;
+  variable3 = TAG_Bool(( variable1 /*dir*/ ==  NIT_NULL /*null*/) || (( variable1 /*dir*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*dir*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*dir*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*dir*/,COLOR_kernel___Object_____eqeq))( variable1 /*dir*/,  NIT_NULL /*null*/) /*MMDirectory::==*/)))));
+  if (UNTAG_Bool(variable3)) { /*if*/
+    ATTR_abstractmetamodel___MMModule____full_name( self) /*MMModule::_full_name*/ =  variable0 /*name*/;
+  } else { /*if*/
+    variable3 = ((abstractmetamodel___MMDirectory___full_name_for_t)CALL( variable1 /*dir*/,COLOR_abstractmetamodel___MMDirectory___full_name_for))( variable1 /*dir*/,  variable0 /*name*/) /*MMDirectory::full_name_for*/;
+    ATTR_abstractmetamodel___MMModule____full_name( self) /*MMModule::_full_name*/ = variable3;
+  }
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMModule].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void abstractmetamodel___MMModule___add_super_module(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::add_super_module (src/metamodel//abstractmetamodel.nit:172,2--191:45)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 = ATTR_abstractmetamodel___MMModule____explicit_imported_modules( self) /*MMModule::_explicit_imported_modules*/;
+  ((abstract_collection___SimpleCollection___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2,  variable0 /*m*/) /*Set::add*/;
+  variable2 = TAG_Bool(( variable1 /*visibility_level*/)==( TAG_Int(0)));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable2 = ATTR_abstractmetamodel___MMModule____intrude_modules( self) /*MMModule::_intrude_modules*/;
+    ((abstract_collection___SimpleCollection___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2,  variable0 /*m*/) /*Set::add*/;
+    variable2 = ATTR_abstractmetamodel___MMModule____intrude_modules( self) /*MMModule::_intrude_modules*/;
+    variable3 = ATTR_abstractmetamodel___MMModule____intrude_modules( variable0 /*m*/) /*MMModule::_intrude_modules*/;
+    ((abstract_collection___SimpleCollection___add_all_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add_all))(variable2, variable3) /*Set::add_all*/;
+    variable2 = ATTR_abstractmetamodel___MMModule____public_modules( self) /*MMModule::_public_modules*/;
+    variable3 = ATTR_abstractmetamodel___MMModule____public_modules( variable0 /*m*/) /*MMModule::_public_modules*/;
+    ((abstract_collection___SimpleCollection___add_all_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add_all))(variable2, variable3) /*Set::add_all*/;
+    variable2 = ATTR_abstractmetamodel___MMModule____private_modules( self) /*MMModule::_private_modules*/;
+    variable3 = ATTR_abstractmetamodel___MMModule____private_modules( variable0 /*m*/) /*MMModule::_private_modules*/;
+    ((abstract_collection___SimpleCollection___add_all_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add_all))(variable2, variable3) /*Set::add_all*/;
+  } else { /*if*/
+    variable2 = TAG_Bool(( variable1 /*visibility_level*/)==( TAG_Int(1)));
+    if (UNTAG_Bool(variable2)) { /*if*/
+      variable2 = ATTR_abstractmetamodel___MMModule____public_modules( self) /*MMModule::_public_modules*/;
+      ((abstract_collection___SimpleCollection___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2,  variable0 /*m*/) /*Set::add*/;
+      variable2 = ATTR_abstractmetamodel___MMModule____public_modules( self) /*MMModule::_public_modules*/;
+      variable3 = ATTR_abstractmetamodel___MMModule____intrude_modules( variable0 /*m*/) /*MMModule::_intrude_modules*/;
+      ((abstract_collection___SimpleCollection___add_all_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add_all))(variable2, variable3) /*Set::add_all*/;
+      variable2 = ATTR_abstractmetamodel___MMModule____public_modules( self) /*MMModule::_public_modules*/;
+      variable3 = ATTR_abstractmetamodel___MMModule____public_modules( variable0 /*m*/) /*MMModule::_public_modules*/;
+      ((abstract_collection___SimpleCollection___add_all_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add_all))(variable2, variable3) /*Set::add_all*/;
+    } else { /*if*/
+      variable2 = ATTR_abstractmetamodel___MMModule____private_modules( self) /*MMModule::_private_modules*/;
+      ((abstract_collection___SimpleCollection___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2,  variable0 /*m*/) /*Set::add*/;
+      variable2 = ATTR_abstractmetamodel___MMModule____private_modules( self) /*MMModule::_private_modules*/;
+      variable3 = ATTR_abstractmetamodel___MMModule____intrude_modules( variable0 /*m*/) /*MMModule::_intrude_modules*/;
+      ((abstract_collection___SimpleCollection___add_all_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add_all))(variable2, variable3) /*Set::add_all*/;
+      variable2 = ATTR_abstractmetamodel___MMModule____private_modules( self) /*MMModule::_private_modules*/;
+      variable3 = ATTR_abstractmetamodel___MMModule____public_modules( variable0 /*m*/) /*MMModule::_public_modules*/;
+      ((abstract_collection___SimpleCollection___add_all_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add_all))(variable2, variable3) /*Set::add_all*/;
+    }
+  }
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMModule___visibility_for(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::visibility_for (src/metamodel//abstractmetamodel.nit:196,2--210:11)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = TAG_Bool(( variable0 /*m*/ ==  self) || (( variable0 /*m*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*m*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*m*/, self)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*m*/,COLOR_kernel___Object_____eqeq))( variable0 /*m*/,  self) /*MMModule::==*/)))));
+  variable2 = variable1;
+  if (!UNTAG_Bool(variable2)) { /* or */
+    variable2 = ATTR_abstractmetamodel___MMModule____intrude_modules( self) /*MMModule::_intrude_modules*/;
+    variable2 = ((abstract_collection___Collection___has_t)CALL(variable2,COLOR_abstract_collection___Collection___has))(variable2,  variable0 /*m*/) /*Set::has*/;
+  }
+  variable1 = variable2;
+  if (UNTAG_Bool(variable1)) { /*if*/
+    variable1 =  TAG_Int(3);
+    goto return_label11;
+  } else { /*if*/
+    variable1 = ATTR_abstractmetamodel___MMModule____public_modules( self) /*MMModule::_public_modules*/;
+    variable1 = ((abstract_collection___Collection___has_t)CALL(variable1,COLOR_abstract_collection___Collection___has))(variable1,  variable0 /*m*/) /*Set::has*/;
+    if (UNTAG_Bool(variable1)) { /*if*/
+      variable1 =  TAG_Int(2);
+      goto return_label11;
+    } else { /*if*/
+      variable1 = ATTR_abstractmetamodel___MMModule____private_modules( self) /*MMModule::_private_modules*/;
+      variable1 = ((abstract_collection___Collection___has_t)CALL(variable1,COLOR_abstract_collection___Collection___has))(variable1,  variable0 /*m*/) /*Set::has*/;
+      if (UNTAG_Bool(variable1)) { /*if*/
+        variable1 =  TAG_Int(1);
+        goto return_label11;
+      } else { /*if*/
+        variable1 =  TAG_Int(0);
+        goto return_label11;
+      }
+    }
+  }
+  return_label11: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstractmetamodel___MMModule_____bra(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::[] (src/metamodel//abstractmetamodel.nit:215,2--223:14)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_abstractmetamodel___MMModule____local_class_by_global( self) /*MMModule::_local_class_by_global*/;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Map::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:218,3--39\n"); nit_exit(1);}
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*c*/ ==  NIT_NULL /*null*/) || (( variable0 /*c*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*c*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*c*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*c*/,COLOR_kernel___Object_____eqeq))( variable0 /*c*/,  NIT_NULL /*null*/) /*MMGlobalClass::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:219,3--18\n"); nit_exit(1);}
+  variable1 = ATTR_abstractmetamodel___MMModule____local_class_by_global( self) /*MMModule::_local_class_by_global*/;
+  variable1 = ((abstract_collection___Map___has_key_t)CALL(variable1,COLOR_abstract_collection___Map___has_key))(variable1,  variable0 /*c*/) /*Map::has_key*/;
+  if (UNTAG_Bool(variable1)) { /*if*/
+    variable1 = ATTR_abstractmetamodel___MMModule____local_class_by_global( self) /*MMModule::_local_class_by_global*/;
+    variable1 = ((abstract_collection___Map_____bra_t)CALL(variable1,COLOR_abstract_collection___Map_____bra))(variable1,  variable0 /*c*/) /*Map::[]*/;
+    goto return_label12;
+  } else { /*if*/
+    variable1 =  NIT_NULL /*null*/;
+    goto return_label12;
+  }
+  return_label12: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+void abstractmetamodel___MMModule___add_local_class(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::add_local_class (src/metamodel//abstractmetamodel.nit:227,2--231:22)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  ATTR_abstractmetamodel___MMLocalClass____module( variable0 /*c*/) /*MMLocalClass::_module*/ =  self;
+  variable1 = ATTR_abstractmetamodel___MMModule____local_classes( self) /*MMModule::_local_classes*/;
+  ((array___AbstractArray___add_t)CALL(variable1,COLOR_abstract_collection___SimpleCollection___add))(variable1,  variable0 /*c*/) /*Array::add*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMModule___class_by_name(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::class_by_name (src/metamodel//abstractmetamodel.nit:234,2--237:37)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_abstractmetamodel___MMModule____global_class_by_name( self) /*MMModule::_global_class_by_name*/;
+  variable1 = ((abstract_collection___Map_____bra_t)CALL(variable1,COLOR_abstract_collection___Map_____bra))(variable1,  variable0 /*n*/) /*Map::[]*/;
+  variable1 = ((abstractmetamodel___MMModule_____bra_t)CALL( self,COLOR_abstractmetamodel___MMModule_____bra))( self, variable1) /*MMModule::[]*/;
+  goto return_label14;
+  return_label14: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstractmetamodel___MMModule___has_global_class_named(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::has_global_class_named (src/metamodel//abstractmetamodel.nit:240,2--243:40)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_abstractmetamodel___MMModule____global_class_by_name( self) /*MMModule::_global_class_by_name*/;
+  variable1 = ((abstract_collection___Map___has_key_t)CALL(variable1,COLOR_abstract_collection___Map___has_key))(variable1,  variable0 /*n*/) /*Map::has_key*/;
+  goto return_label15;
+  return_label15: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstractmetamodel___MMModule___global_class_named(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::global_class_named (src/metamodel//abstractmetamodel.nit:246,2--253:14)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_abstractmetamodel___MMModule____global_class_by_name( self) /*MMModule::_global_class_by_name*/;
+  variable1 = ((abstract_collection___Map___has_key_t)CALL(variable1,COLOR_abstract_collection___Map___has_key))(variable1,  variable0 /*n*/) /*Map::has_key*/;
+  if (UNTAG_Bool(variable1)) { /*if*/
+    variable1 = ATTR_abstractmetamodel___MMModule____global_class_by_name( self) /*MMModule::_global_class_by_name*/;
+    variable1 = ((abstract_collection___Map_____bra_t)CALL(variable1,COLOR_abstract_collection___Map_____bra))(variable1,  variable0 /*n*/) /*Map::[]*/;
+    goto return_label16;
+  } else { /*if*/
+    variable1 =  NIT_NULL /*null*/;
+    goto return_label16;
+  }
+  return_label16: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstractmetamodel___MMModule___to_s(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::to_s (src/metamodel//abstractmetamodel.nit:257,2--36)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstractmetamodel___MMModule___name_t)CALL( self,COLOR_abstractmetamodel___MMModule___name))( self) /*MMModule::name*/;
+  variable0 = ((symbol___Symbol___to_s_t)CALL(variable0,COLOR_string___Object___to_s))(variable0) /*Symbol::to_s*/;
+  goto return_label17;
+  return_label17: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void abstractmetamodel___MMModule___set_supers_class(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::set_supers_class (src/metamodel//abstractmetamodel.nit:259,2--267:35)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  val_t variable4;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*supers*/ ==  NIT_NULL /*null*/) || (( variable1 /*supers*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable1 /*supers*/,COLOR_kernel___Object_____eqeq))( variable1 /*supers*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:262,3--23\n"); nit_exit(1);}
+  variable3 = ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy( self) /*MMModule::_class_specialization_hierarchy*/;
+  variable3 = ((partial_order___PartialOrder___select_smallests_t)CALL(variable3,COLOR_partial_order___PartialOrder___select_smallests))(variable3,  variable1 /*supers*/) /*PartialOrder::select_smallests*/;
+  variable2 = variable3;
+  variable3 = ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy( self) /*MMModule::_class_specialization_hierarchy*/;
+  variable3 = ((partial_order___PartialOrder___add_t)CALL(variable3,COLOR_partial_order___PartialOrder___add))(variable3,  variable0 /*c*/,  variable2 /*tab*/) /*PartialOrder::add*/;
+  ATTR_abstractmetamodel___MMLocalClass____cshe( variable0 /*c*/) /*MMLocalClass::_cshe*/ = variable3;
+  variable4 = ((abstractmetamodel___MMLocalClass___crhe_t)CALL( variable0 /*c*/,COLOR_abstractmetamodel___MMLocalClass___crhe))( variable0 /*c*/) /*MMLocalClass::crhe*/;
+  variable4 = ((partial_order___PartialOrderElement___direct_greaters_t)CALL(variable4,COLOR_partial_order___PartialOrderElement___direct_greaters))(variable4) /*PartialOrderElement::direct_greaters*/;
+  variable4 = ((array___Collection___to_a_t)CALL(variable4,COLOR_array___Collection___to_a))(variable4) /*Array::to_a*/;
+  variable3 = variable4;
+  ((abstract_collection___SimpleCollection___add_all_t)CALL( variable3 /*tab_all*/,COLOR_abstract_collection___SimpleCollection___add_all))( variable3 /*tab_all*/,  variable2 /*tab*/) /*Array::add_all*/;
+  variable4 = ((abstractmetamodel___MMModule___context_t)CALL( self,COLOR_abstractmetamodel___MMModule___context))( self) /*MMModule::context*/;
+  ((abstractmetamodel___MMContext___add_local_class_t)CALL(variable4,COLOR_abstractmetamodel___MMContext___add_local_class))(variable4,  variable0 /*c*/,  variable3 /*tab_all*/) /*MMContext::add_local_class*/;
+  tracehead = trace.prev;
+  return;
+}
+void abstractmetamodel___MMModule___register_global_class(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMModule::register_global_class (src/metamodel//abstractmetamodel.nit:270,2--274:38)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable0 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable0 /*c*/) /*MMLocalClass::global*/;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*MMGlobalClass::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:273,3--25\n"); nit_exit(1);}
+  variable1 = ATTR_abstractmetamodel___MMModule____local_class_by_global( self) /*MMModule::_local_class_by_global*/;
+  variable2 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable0 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable0 /*c*/) /*MMLocalClass::global*/;
+  ((abstract_collection___Map_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1, variable2,  variable0 /*c*/) /*Map::[]=*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMGlobalClass___intro(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::intro (src/metamodel//abstractmetamodel.nit:279,2--280:35)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMGlobalClass____intro( self) /*MMGlobalClass::_intro*/;
+}
+val_t abstractmetamodel___MMGlobalClass___class_refinement_hierarchy(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::class_refinement_hierarchy (src/metamodel//abstractmetamodel.nit:282,2--284:102)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMGlobalClass____class_refinement_hierarchy( self) /*MMGlobalClass::_class_refinement_hierarchy*/;
+}
+void abstractmetamodel___MMGlobalClass___init(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::init (src/metamodel//abstractmetamodel.nit:286,2--290:33)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMGlobalClass].i]) return;
+  ATTR_abstractmetamodel___MMGlobalClass____intro( self) /*MMGlobalClass::_intro*/ =  variable0 /*c*/;
+  variable1 = ((abstractmetamodel___MMLocalClass___context_t)CALL( variable0 /*c*/,COLOR_abstractmetamodel___MMLocalClass___context))( variable0 /*c*/) /*MMLocalClass::context*/;
+  ((abstractmetamodel___MMContext___add_global_class_t)CALL(variable1,COLOR_abstractmetamodel___MMContext___add_global_class))(variable1,  self) /*MMContext::add_global_class*/;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMGlobalClass].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMGlobalClass___name(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::name (src/metamodel//abstractmetamodel.nit:293,2--296:19)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstractmetamodel___MMGlobalClass___intro_t)CALL( self,COLOR_abstractmetamodel___MMGlobalClass___intro))( self) /*MMGlobalClass::intro*/;
+  variable0 = ((abstractmetamodel___MMLocalClass___name_t)CALL(variable0,COLOR_abstractmetamodel___MMLocalClass___name))(variable0) /*MMLocalClass::name*/;
+  goto return_label21;
+  return_label21: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstractmetamodel___MMGlobalClass___module(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::module (src/metamodel//abstractmetamodel.nit:299,2--302:21)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstractmetamodel___MMGlobalClass___intro_t)CALL( self,COLOR_abstractmetamodel___MMGlobalClass___intro))( self) /*MMGlobalClass::intro*/;
+  variable0 = ((abstractmetamodel___MMLocalClass___module_t)CALL(variable0,COLOR_abstractmetamodel___MMLocalClass___module))(variable0) /*MMLocalClass::module*/;
+  goto return_label22;
+  return_label22: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstractmetamodel___MMGlobalClass___to_s(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::to_s (src/metamodel//abstractmetamodel.nit:305,2--307:19)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstractmetamodel___MMGlobalClass___intro_t)CALL( self,COLOR_abstractmetamodel___MMGlobalClass___intro))( self) /*MMGlobalClass::intro*/;
+  variable0 = ((abstractmetamodel___MMLocalClass___to_s_t)CALL(variable0,COLOR_string___Object___to_s))(variable0) /*MMLocalClass::to_s*/;
+  goto return_label23;
+  return_label23: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void abstractmetamodel___MMGlobalClass___register_local_class(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::register_local_class (src/metamodel//abstractmetamodel.nit:310,2--321:50)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+    val_t variable4;
+    val_t variable5;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((abstractmetamodel___MMLocalClass___module_t)CALL( variable0 /*c*/,COLOR_abstractmetamodel___MMLocalClass___module))( variable0 /*c*/) /*MMLocalClass::module*/;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*MMModule::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:313,3--25\n"); nit_exit(1);}
+  variable1 = ((abstractmetamodel___MMLocalClass___crhe_t)CALL( variable0 /*c*/,COLOR_abstractmetamodel___MMLocalClass___crhe))( variable0 /*c*/) /*MMLocalClass::crhe*/;
+  variable1 = TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*PartialOrderElement::==*/)))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:314,3--23\n"); nit_exit(1);}
+  variable2 = NEW_array___Array___init(); /*new Array[MMLocalClass]*/
+  variable1 = variable2;
+  variable2 = ((abstractmetamodel___MMGlobalClass___class_refinement_hierarchy_t)CALL( self,COLOR_abstractmetamodel___MMGlobalClass___class_refinement_hierarchy))( self) /*MMGlobalClass::class_refinement_hierarchy*/;
+  variable2 = ((partial_order___PartialOrder___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*PartialOrder::iterator*/;
+  while (true) { /*for*/
+    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable3)) break; /*for*/
+    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
+    variable4 = ((abstractmetamodel___MMLocalClass___module_t)CALL( variable0 /*c*/,COLOR_abstractmetamodel___MMLocalClass___module))( variable0 /*c*/) /*MMLocalClass::module*/;
+    variable4 = ((abstractmetamodel___MMModule___mhe_t)CALL(variable4,COLOR_abstractmetamodel___MMModule___mhe))(variable4) /*MMModule::mhe*/;
+    variable5 = ((abstractmetamodel___MMLocalClass___module_t)CALL( variable3 /*s*/,COLOR_abstractmetamodel___MMLocalClass___module))( variable3 /*s*/) /*MMLocalClass::module*/;
+    variable4 = ((partial_order___PartialOrderElement_____l_t)CALL(variable4,COLOR_partial_order___PartialOrderElement_____l))(variable4, variable5) /*PartialOrderElement::<*/;
+    variable5 = variable4;
+    if (UNTAG_Bool(variable5)) { /* and */
+      variable5 = TAG_Bool(( variable3 /*s*/==NIT_NULL) || VAL_ISA( variable3 /*s*/, COLOR_MMConcreteClass, ID_MMConcreteClass)) /*cast MMConcreteClass*/;
+    }
+    variable4 = variable5;
+    if (UNTAG_Bool(variable4)) { /*if*/
+      ((array___AbstractArray___add_t)CALL( variable1 /*sup*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*sup*/,  variable3 /*s*/) /*Array::add*/;
+    }
+    continue_25: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+  }
+  break_25: while(0);
+  variable2 = ATTR_abstractmetamodel___MMGlobalClass____class_refinement_hierarchy( self) /*MMGlobalClass::_class_refinement_hierarchy*/;
+  variable2 = ((partial_order___PartialOrder___add_t)CALL(variable2,COLOR_partial_order___PartialOrder___add))(variable2,  variable0 /*c*/,  variable1 /*sup*/) /*PartialOrder::add*/;
+  ATTR_abstractmetamodel___MMLocalClass____crhe( variable0 /*c*/) /*MMLocalClass::_crhe*/ = variable2;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMGlobalClass___is_interface(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::is_interface (src/metamodel//abstractmetamodel.nit:324,2--325:43)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMGlobalClass____is_interface( self) /*MMGlobalClass::_is_interface*/;
+}
+void abstractmetamodel___MMGlobalClass___is_interface__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::is_interface= (src/metamodel//abstractmetamodel.nit:324,2--325:43)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstractmetamodel___MMGlobalClass____is_interface( self) /*MMGlobalClass::_is_interface*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMGlobalClass___is_abstract(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::is_abstract (src/metamodel//abstractmetamodel.nit:327,2--328:42)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMGlobalClass____is_abstract( self) /*MMGlobalClass::_is_abstract*/;
+}
+void abstractmetamodel___MMGlobalClass___is_abstract__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::is_abstract= (src/metamodel//abstractmetamodel.nit:327,2--328:42)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstractmetamodel___MMGlobalClass____is_abstract( self) /*MMGlobalClass::_is_abstract*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMGlobalClass___is_universal(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::is_universal (src/metamodel//abstractmetamodel.nit:330,2--331:43)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMGlobalClass____is_universal( self) /*MMGlobalClass::_is_universal*/;
+}
+void abstractmetamodel___MMGlobalClass___is_universal__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::is_universal= (src/metamodel//abstractmetamodel.nit:330,2--331:43)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstractmetamodel___MMGlobalClass____is_universal( self) /*MMGlobalClass::_is_universal*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMGlobalClass___visibility_level(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::visibility_level (src/metamodel//abstractmetamodel.nit:333,2--336:46)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMGlobalClass____visibility_level( self) /*MMGlobalClass::_visibility_level*/;
+}
+void abstractmetamodel___MMGlobalClass___visibility_level__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalClass::visibility_level= (src/metamodel//abstractmetamodel.nit:333,2--336:46)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstractmetamodel___MMGlobalClass____visibility_level( self) /*MMGlobalClass::_visibility_level*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMLocalClass___name(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::name (src/metamodel//abstractmetamodel.nit:341,2--342:35)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalClass____name( self) /*MMLocalClass::_name*/;
+}
+val_t abstractmetamodel___MMLocalClass___arity(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::arity (src/metamodel//abstractmetamodel.nit:344,2--346:27)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalClass____arity( self) /*MMLocalClass::_arity*/;
+}
+val_t abstractmetamodel___MMLocalClass___module(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::module (src/metamodel//abstractmetamodel.nit:348,2--349:32)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalClass____module( self) /*MMLocalClass::_module*/;
+}
+val_t abstractmetamodel___MMLocalClass___abstract(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::abstract (src/metamodel//abstractmetamodel.nit:351,2--352:39)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalClass____abstract( self) /*MMLocalClass::_abstract*/;
+}
+void abstractmetamodel___MMLocalClass___abstract__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::abstract= (src/metamodel//abstractmetamodel.nit:351,2--352:39)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstractmetamodel___MMLocalClass____abstract( self) /*MMLocalClass::_abstract*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMLocalClass___global(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::global (src/metamodel//abstractmetamodel.nit:354,2--355:37)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalClass____global( self) /*MMLocalClass::_global*/;
+}
+val_t abstractmetamodel___MMLocalClass___crhe(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::crhe (src/metamodel//abstractmetamodel.nit:357,2--358:54)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalClass____crhe( self) /*MMLocalClass::_crhe*/;
+}
+val_t abstractmetamodel___MMLocalClass___cshe(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::cshe (src/metamodel//abstractmetamodel.nit:360,2--361:54)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalClass____cshe( self) /*MMLocalClass::_cshe*/;
+}
+val_t abstractmetamodel___MMLocalClass___che(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::che (src/metamodel//abstractmetamodel.nit:363,2--364:53)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalClass____che( self) /*MMLocalClass::_che*/;
+}
+val_t abstractmetamodel___MMLocalClass___local_property_by_global(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::local_property_by_global (src/metamodel//abstractmetamodel.nit:366,2--367:79)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalClass____local_property_by_global( self) /*MMLocalClass::_local_property_by_global*/;
+}
+val_t abstractmetamodel___MMLocalClass___global_properties(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::global_properties (src/metamodel//abstractmetamodel.nit:369,2--370:55)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalClass____global_properties( self) /*MMLocalClass::_global_properties*/;
+}
+val_t abstractmetamodel___MMLocalClass___properties_by_name(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::properties_by_name (src/metamodel//abstractmetamodel.nit:372,2--373:70)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalClass____properties_by_name( self) /*MMLocalClass::_properties_by_name*/;
+}
+void abstractmetamodel___MMLocalClass___init(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::init (src/metamodel//abstractmetamodel.nit:375,2--379:16)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMLocalClass].i]) return;
+  ATTR_abstractmetamodel___MMLocalClass____name( self) /*MMLocalClass::_name*/ =  variable0 /*name*/;
+  ATTR_abstractmetamodel___MMLocalClass____arity( self) /*MMLocalClass::_arity*/ =  variable1 /*arity*/;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMLocalClass].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMLocalClass___for_module(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::for_module (src/metamodel//abstractmetamodel.nit:382,2--385:17)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((abstractmetamodel___MMLocalClass___global_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___global))( self) /*MMLocalClass::global*/;
+  variable1 = ((abstractmetamodel___MMModule_____bra_t)CALL( variable0 /*m*/,COLOR_abstractmetamodel___MMModule_____bra))( variable0 /*m*/, variable1) /*MMModule::[]*/;
+  goto return_label27;
+  return_label27: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+void abstractmetamodel___MMLocalClass___new_global(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::new_global (src/metamodel//abstractmetamodel.nit:388,2--394:14)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable1 = NEW_abstractmetamodel___MMGlobalClass___init( self); /*new MMGlobalClass*/
+  variable0 = variable1;
+  variable1 = ATTR_abstractmetamodel___MMLocalClass____module( self) /*MMLocalClass::_module*/;
+  variable1 = ATTR_abstractmetamodel___MMModule____global_classes(variable1) /*MMModule::_global_classes*/;
+  ((array___AbstractArray___add_t)CALL(variable1,COLOR_abstract_collection___SimpleCollection___add))(variable1,  variable0 /*g*/) /*Array::add*/;
+  variable1 = ATTR_abstractmetamodel___MMLocalClass____module( self) /*MMLocalClass::_module*/;
+  variable1 = ATTR_abstractmetamodel___MMModule____global_class_by_name(variable1) /*MMModule::_global_class_by_name*/;
+  variable2 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
+  ((abstract_collection___Map_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1, variable2,  variable0 /*g*/) /*Map::[]=*/;
+  ((abstractmetamodel___MMLocalClass___set_global_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___set_global))( self,  variable0 /*g*/) /*MMLocalClass::set_global*/;
+  tracehead = trace.prev;
+  return;
+}
+void abstractmetamodel___MMLocalClass___set_global(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::set_global (src/metamodel//abstractmetamodel.nit:397,2--405:36)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*g*/ ==  NIT_NULL /*null*/) || (( variable0 /*g*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*g*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*g*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*g*/,COLOR_kernel___Object_____eqeq))( variable0 /*g*/,  NIT_NULL /*null*/) /*MMGlobalClass::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:402,3--18\n"); nit_exit(1);}
+  ATTR_abstractmetamodel___MMLocalClass____global( self) /*MMLocalClass::_global*/ =  variable0 /*g*/;
+  variable1 = ATTR_abstractmetamodel___MMLocalClass____global( self) /*MMLocalClass::_global*/;
+  ((abstractmetamodel___MMGlobalClass___register_local_class_t)CALL(variable1,COLOR_abstractmetamodel___MMGlobalClass___register_local_class))(variable1,  self) /*MMGlobalClass::register_local_class*/;
+  variable1 = ATTR_abstractmetamodel___MMLocalClass____module( self) /*MMLocalClass::_module*/;
+  ((abstractmetamodel___MMModule___register_global_class_t)CALL(variable1,COLOR_abstractmetamodel___MMModule___register_global_class))(variable1,  self) /*MMModule::register_global_class*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMLocalClass___has_global_property_by_name(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::has_global_property_by_name (src/metamodel//abstractmetamodel.nit:408,2--413:22)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ATTR_abstractmetamodel___MMLocalClass____properties_by_name( self) /*MMLocalClass::_properties_by_name*/;
+  variable2 = ((abstract_collection___Map_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable0 /*n*/) /*Map::[]*/;
+  variable1 = variable2;
+  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*props*/ ==  NIT_NULL /*null*/) || (( variable1 /*props*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable1 /*props*/,COLOR_kernel___Object_____eqeq))( variable1 /*props*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable1 = variable2;
+  goto return_label30;
+  return_label30: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstractmetamodel___MMLocalClass___get_property_by_name(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::get_property_by_name (src/metamodel//abstractmetamodel.nit:416,2--424:20)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ATTR_abstractmetamodel___MMLocalClass____properties_by_name( self) /*MMLocalClass::_properties_by_name*/;
+  variable2 = ((abstract_collection___Map_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable0 /*n*/) /*Map::[]*/;
+  variable1 = variable2;
+  variable2 = TAG_Bool(( variable1 /*props*/ ==  NIT_NULL /*null*/) || (( variable1 /*props*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable1 /*props*/,COLOR_kernel___Object_____eqeq))( variable1 /*props*/,  NIT_NULL /*null*/) /*Array::==*/)));
+  variable3 = variable2;
+  if (!UNTAG_Bool(variable3)) { /* or */
+    variable3 = ((array___AbstractArray___length_t)CALL( variable1 /*props*/,COLOR_abstract_collection___Collection___length))( variable1 /*props*/) /*Array::length*/;
+    variable3 = TAG_Bool(UNTAG_Int(variable3)>UNTAG_Int( TAG_Int(1)));
+  }
+  variable2 = variable3;
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable1 =  NIT_NULL /*null*/;
+    goto return_label31;
+  }
+  variable2 = ((abstract_collection___IndexedCollection___first_t)CALL( variable1 /*props*/,COLOR_abstract_collection___Collection___first))( variable1 /*props*/) /*Array::first*/;
+  variable1 = variable2;
+  goto return_label31;
+  return_label31: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstractmetamodel___MMLocalClass___attribute(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::attribute (src/metamodel//abstractmetamodel.nit:427,2--431:31)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((abstractmetamodel___MMLocalClass___get_property_by_name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___get_property_by_name))( self,  variable0 /*a*/) /*MMLocalClass::get_property_by_name*/;
+  goto return_label32;
+  return_label32: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstractmetamodel___MMLocalClass___method(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::method (src/metamodel//abstractmetamodel.nit:434,2--444:13)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_abstractmetamodel___MMLocalClass____properties_by_name( self) /*MMLocalClass::_properties_by_name*/;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Map::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:438,3--36\n"); nit_exit(1);}
+  variable2 = ATTR_abstractmetamodel___MMLocalClass____properties_by_name( self) /*MMLocalClass::_properties_by_name*/;
+  variable2 = ((abstract_collection___Map_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable0 /*na*/) /*Map::[]*/;
+  variable1 = variable2;
+  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*props*/ ==  NIT_NULL /*null*/) || (( variable1 /*props*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable1 /*props*/,COLOR_kernel___Object_____eqeq))( variable1 /*props*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable2 = ((abstract_collection___IndexedCollection___first_t)CALL( variable1 /*props*/,COLOR_abstract_collection___Collection___first))( variable1 /*props*/) /*Array::first*/;
+    variable1 = variable2;
+    goto return_label33;
+  }
+  variable1 =  NIT_NULL /*null*/;
+  goto return_label33;
+  return_label33: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstractmetamodel___MMLocalClass___super_methods_named(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::super_methods_named (src/metamodel//abstractmetamodel.nit:447,2--464:12)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+    val_t variable4;
+    val_t variable5;
+    val_t variable6;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = NEW_array___Array___init(); /*new Array[MMLocalClass]*/
+  variable1 = variable2;
+  variable2 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___cshe))( self) /*MMLocalClass::cshe*/;
+  variable2 = ((partial_order___PartialOrderElement___greaters_t)CALL(variable2,COLOR_partial_order___PartialOrderElement___greaters))(variable2) /*PartialOrderElement::greaters*/;
+  variable2 = ((abstract_collection___Collection___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Set::iterator*/;
+  while (true) { /*for*/
+    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable3)) break; /*for*/
+    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
+    variable5 = ((abstractmetamodel___MMLocalClass___method_t)CALL( variable3 /*c*/,COLOR_abstractmetamodel___MMLocalClass___method))( variable3 /*c*/,  variable0 /*n*/) /*MMLocalClass::method*/;
+    variable4 = variable5;
+    variable5 = TAG_Bool(( variable4 /*g*/ ==  NIT_NULL /*null*/) || (( variable4 /*g*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*g*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*g*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*g*/,COLOR_kernel___Object_____eqeq))( variable4 /*g*/,  NIT_NULL /*null*/) /*MMGlobalProperty::==*/)))));
+    if (UNTAG_Bool(variable5)) { /*if*/
+      goto continue_35;
+    }
+    ((array___AbstractArray___add_t)CALL( variable1 /*classes*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*classes*/,  variable3 /*c*/) /*Array::add*/;
+    continue_35: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+  }
+  break_35: while(0);
+  variable2 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___cshe))( self) /*MMLocalClass::cshe*/;
+  variable2 = ((partial_order___PartialOrderElement___order_t)CALL(variable2,COLOR_partial_order___PartialOrderElement___order))(variable2) /*PartialOrderElement::order*/;
+  variable2 = ((partial_order___PartialOrder___select_smallests_t)CALL(variable2,COLOR_partial_order___PartialOrder___select_smallests))(variable2,  variable1 /*classes*/) /*PartialOrder::select_smallests*/;
+  variable1 = variable2 /*classes=*/;
+  variable3 = NEW_array___Array___init(); /*new Array[MMLocalProperty]*/
+  variable2 = variable3;
+  variable3 = ((array___AbstractArray___iterator_t)CALL( variable1 /*classes*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*classes*/) /*Array::iterator*/;
+  while (true) { /*for*/
+    variable4 = ((array___ArrayIterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable4)) break; /*for*/
+    variable4 = ((array___ArrayIterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*ArrayIterator::item*/;
+    variable6 = ((abstractmetamodel___MMLocalClass___method_t)CALL( variable4 /*c*/,COLOR_abstractmetamodel___MMLocalClass___method))( variable4 /*c*/,  variable0 /*n*/) /*MMLocalClass::method*/;
+    variable5 = variable6;
+    variable6 = ((abstractmetamodel___MMLocalClass_____bra_t)CALL( variable4 /*c*/,COLOR_abstractmetamodel___MMLocalClass_____bra))( variable4 /*c*/,  variable5 /*g*/) /*MMLocalClass::[]*/;
+    ((array___AbstractArray___add_t)CALL( variable2 /*res*/,COLOR_abstract_collection___SimpleCollection___add))( variable2 /*res*/, variable6) /*Array::add*/;
+    continue_36: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
+  }
+  break_36: while(0);
+  variable1 =  variable2 /*res*/;
+  goto return_label34;
+  return_label34: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+void abstractmetamodel___MMLocalClass___register_local_property(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::register_local_property (src/metamodel//abstractmetamodel.nit:467,2--473:42)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable0 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable0 /*p*/) /*MMLocalProperty::global*/;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*MMGlobalProperty::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:470,3--25\n"); nit_exit(1);}
+  variable1 = ATTR_abstractmetamodel___MMLocalClass____local_property_by_global( self) /*MMLocalClass::_local_property_by_global*/;
+  variable2 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable0 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable0 /*p*/) /*MMLocalProperty::global*/;
+  variable1 = ((abstract_collection___Map___has_key_t)CALL(variable1,COLOR_abstract_collection___Map___has_key))(variable1, variable2) /*Map::has_key*/;
+  if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable1)))) { /*if*/
+    variable1 = ATTR_abstractmetamodel___MMLocalClass____local_property_by_global( self) /*MMLocalClass::_local_property_by_global*/;
+    variable2 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable0 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable0 /*p*/) /*MMLocalProperty::global*/;
+    ((abstract_collection___Map_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1, variable2,  variable0 /*p*/) /*Map::[]=*/;
+  }
+  tracehead = trace.prev;
+  return;
+}
+void abstractmetamodel___MMLocalClass___register_global_property(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::register_global_property (src/metamodel//abstractmetamodel.nit:477,2--489:30)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  val_t variable4;
+    val_t variable5;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( variable0 /*glob*/,COLOR_abstractmetamodel___MMGlobalProperty___intro))( variable0 /*glob*/) /*MMGlobalProperty::intro*/;
+  variable1 = variable2;
+  variable3 = ((abstractmetamodel___MMLocalProperty___name_t)CALL( variable1 /*prop*/,COLOR_abstractmetamodel___MMLocalProperty___name))( variable1 /*prop*/) /*MMConcreteProperty::name*/;
+  variable2 = variable3;
+  variable4 = ATTR_abstractmetamodel___MMLocalClass____properties_by_name( self) /*MMLocalClass::_properties_by_name*/;
+  variable4 = ((abstract_collection___Map_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable2 /*name*/) /*Map::[]*/;
+  variable3 = variable4;
+  variable4 = TAG_Bool(( variable3 /*props*/ ==  NIT_NULL /*null*/) || (( variable3 /*props*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable3 /*props*/,COLOR_kernel___Object_____eqeq))( variable3 /*props*/,  NIT_NULL /*null*/) /*Array::==*/)));
+  if (UNTAG_Bool(variable4)) { /*if*/
+    variable4 = ATTR_abstractmetamodel___MMLocalClass____properties_by_name( self) /*MMLocalClass::_properties_by_name*/;
+    variable5 = NEW_array___Array___with_capacity(TAG_Int(1)); /*new Array[MMGlobalProperty]*/
+    ((array___AbstractArray___add_t)CALL(variable5,COLOR_abstract_collection___SimpleCollection___add))(variable5,  variable0 /*glob*/) /*Array::add*/;
+    ((abstract_collection___Map_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable2 /*name*/, variable5) /*Map::[]=*/;
+  } else { /*if*/
+    variable4 = ATTR_abstractmetamodel___MMLocalClass____properties_by_name( self) /*MMLocalClass::_properties_by_name*/;
+    variable4 = ((abstract_collection___Map_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable2 /*name*/) /*Map::[]*/;
+    ((array___AbstractArray___add_t)CALL(variable4,COLOR_abstract_collection___SimpleCollection___add))(variable4,  variable0 /*glob*/) /*Array::add*/;
+  }
+  variable4 = ATTR_abstractmetamodel___MMLocalClass____global_properties( self) /*MMLocalClass::_global_properties*/;
+  ((abstract_collection___SimpleCollection___add_t)CALL(variable4,COLOR_abstract_collection___SimpleCollection___add))(variable4,  variable0 /*glob*/) /*Set::add*/;
+  ((abstractmetamodel___MMLocalClass___register_local_property_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___register_local_property))( self,  variable1 /*prop*/) /*MMLocalClass::register_local_property*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMLocalClass_____bra(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::[] (src/metamodel//abstractmetamodel.nit:492,2--500:13)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_abstractmetamodel___MMLocalClass____local_property_by_global( self) /*MMLocalClass::_local_property_by_global*/;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Map::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:495,3--42\n"); nit_exit(1);}
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*glob*/ ==  NIT_NULL /*null*/) || (( variable0 /*glob*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*glob*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*glob*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*glob*/,COLOR_kernel___Object_____eqeq))( variable0 /*glob*/,  NIT_NULL /*null*/) /*MMGlobalProperty::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:496,3--21\n"); nit_exit(1);}
+  variable1 = ATTR_abstractmetamodel___MMLocalClass____local_property_by_global( self) /*MMLocalClass::_local_property_by_global*/;
+  variable1 = ((abstract_collection___Map___has_key_t)CALL(variable1,COLOR_abstract_collection___Map___has_key))(variable1,  variable0 /*glob*/) /*Map::has_key*/;
+  if (UNTAG_Bool(variable1)) { /*if*/
+    variable1 = ATTR_abstractmetamodel___MMLocalClass____local_property_by_global( self) /*MMLocalClass::_local_property_by_global*/;
+    variable1 = ((abstract_collection___Map_____bra_t)CALL(variable1,COLOR_abstract_collection___Map_____bra))(variable1,  variable0 /*glob*/) /*Map::[]*/;
+    goto return_label39;
+  }
+  variable1 =  NIT_NULL /*null*/;
+  goto return_label39;
+  return_label39: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t abstractmetamodel___MMLocalClass___context(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::context (src/metamodel//abstractmetamodel.nit:503,2--504:49)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstractmetamodel___MMLocalClass___module_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___module))( self) /*MMLocalClass::module*/;
+  variable0 = ((abstractmetamodel___MMModule___context_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___context))(variable0) /*MMModule::context*/;
+  goto return_label40;
+  return_label40: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstractmetamodel___MMLocalClass___to_s(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalClass::to_s (src/metamodel//abstractmetamodel.nit:506,2--508:19)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_abstractmetamodel___MMLocalClass____name( self) /*MMLocalClass::_name*/;
+  variable0 = ((symbol___Symbol___to_s_t)CALL(variable0,COLOR_string___Object___to_s))(variable0) /*Symbol::to_s*/;
+  goto return_label41;
+  return_label41: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstractmetamodel___MMGlobalProperty___intro(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalProperty::intro (src/metamodel//abstractmetamodel.nit:516,2--517:41)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMGlobalProperty____intro( self) /*MMGlobalProperty::_intro*/;
+}
+val_t abstractmetamodel___MMGlobalProperty___local_class(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalProperty::local_class (src/metamodel//abstractmetamodel.nit:519,2--522:27)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( self,COLOR_abstractmetamodel___MMGlobalProperty___intro))( self) /*MMGlobalProperty::intro*/;
+  variable0 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL(variable0,COLOR_abstractmetamodel___MMLocalProperty___local_class))(variable0) /*MMConcreteProperty::local_class*/;
+  goto return_label42;
+  return_label42: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstractmetamodel___MMGlobalProperty___concrete_property_hierarchy(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalProperty::concrete_property_hierarchy (src/metamodel//abstractmetamodel.nit:525,2--526:115)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMGlobalProperty____concrete_property_hierarchy( self) /*MMGlobalProperty::_concrete_property_hierarchy*/;
+}
+void abstractmetamodel___MMGlobalProperty___init(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalProperty::init (src/metamodel//abstractmetamodel.nit:528,2--537:55)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMGlobalProperty].i]) return;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*p*/ ==  NIT_NULL /*null*/) || (( variable0 /*p*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*p*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*p*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*p*/,COLOR_kernel___Object_____eqeq))( variable0 /*p*/,  NIT_NULL /*null*/) /*MMConcreteProperty::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:531,3--18\n"); nit_exit(1);}
+  variable1 = ((abstractmetamodel___MMLocalProperty___concrete_property_t)CALL( variable0 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___concrete_property))( variable0 /*p*/) /*MMConcreteProperty::concrete_property*/;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*MMConcreteProperty::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:532,3--36\n"); nit_exit(1);}
+  variable1 = NEW_partial_order___PartialOrder___init(); /*new PartialOrder[MMConcreteProperty]*/
+  ATTR_abstractmetamodel___MMGlobalProperty____concrete_property_hierarchy( self) /*MMGlobalProperty::_concrete_property_hierarchy*/ = variable1;
+  ATTR_abstractmetamodel___MMGlobalProperty____intro( self) /*MMGlobalProperty::_intro*/ =  variable0 /*p*/;
+  variable1 = NEW_array___Array___init(); /*new Array[MMConcreteProperty]*/
+  ((abstractmetamodel___MMGlobalProperty___add_concrete_property_t)CALL( self,COLOR_abstractmetamodel___MMGlobalProperty___add_concrete_property))( self,  variable0 /*p*/, variable1) /*MMGlobalProperty::add_concrete_property*/;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMGlobalProperty].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMGlobalProperty___to_s(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalProperty::to_s (src/metamodel//abstractmetamodel.nit:540,2--42)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( self,COLOR_abstractmetamodel___MMGlobalProperty___intro))( self) /*MMGlobalProperty::intro*/;
+  variable0 = ((abstractmetamodel___MMLocalProperty___full_name_t)CALL(variable0,COLOR_abstractmetamodel___MMLocalProperty___full_name))(variable0) /*MMConcreteProperty::full_name*/;
+  goto return_label44;
+  return_label44: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void abstractmetamodel___MMGlobalProperty___add_concrete_property(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalProperty::add_concrete_property (src/metamodel//abstractmetamodel.nit:542,2--547:51)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*i*/ ==  NIT_NULL /*null*/) || (( variable0 /*i*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*i*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*i*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*i*/,COLOR_kernel___Object_____eqeq))( variable0 /*i*/,  NIT_NULL /*null*/) /*MMConcreteProperty::==*/)))))));
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:545,3--18\n"); nit_exit(1);}
+  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*sup*/ ==  NIT_NULL /*null*/) || (( variable1 /*sup*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable1 /*sup*/,COLOR_kernel___Object_____eqeq))( variable1 /*sup*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:546,3--20\n"); nit_exit(1);}
+  variable2 = ATTR_abstractmetamodel___MMGlobalProperty____concrete_property_hierarchy( self) /*MMGlobalProperty::_concrete_property_hierarchy*/;
+  variable2 = ((partial_order___PartialOrder___add_t)CALL(variable2,COLOR_partial_order___PartialOrder___add))(variable2,  variable0 /*i*/,  variable1 /*sup*/) /*PartialOrder::add*/;
+  ATTR_abstractmetamodel___MMConcreteProperty____cprhe( variable0 /*i*/) /*MMConcreteProperty::_cprhe*/ = variable2;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMGlobalProperty___is_attribute(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalProperty::is_attribute (src/metamodel//abstractmetamodel.nit:550,2--551:56)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( self,COLOR_abstractmetamodel___MMGlobalProperty___intro))( self) /*MMGlobalProperty::intro*/;
+  variable0 = TAG_Bool((variable0==NIT_NULL) || VAL_ISA(variable0, COLOR_MMAttribute, ID_MMAttribute)) /*cast MMAttribute*/;
+  goto return_label46;
+  return_label46: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstractmetamodel___MMGlobalProperty___is_method(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalProperty::is_method (src/metamodel//abstractmetamodel.nit:553,2--554:50)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( self,COLOR_abstractmetamodel___MMGlobalProperty___intro))( self) /*MMGlobalProperty::intro*/;
+  variable0 = TAG_Bool((variable0==NIT_NULL) || VAL_ISA(variable0, COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
+  goto return_label47;
+  return_label47: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstractmetamodel___MMGlobalProperty___is_init(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalProperty::is_init (src/metamodel//abstractmetamodel.nit:556,2--557:38)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMGlobalProperty____is_init( self) /*MMGlobalProperty::_is_init*/;
+}
+void abstractmetamodel___MMGlobalProperty___is_init__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalProperty::is_init= (src/metamodel//abstractmetamodel.nit:556,2--557:38)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstractmetamodel___MMGlobalProperty____is_init( self) /*MMGlobalProperty::_is_init*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMGlobalProperty___visibility_level(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalProperty::visibility_level (src/metamodel//abstractmetamodel.nit:559,2--563:46)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMGlobalProperty____visibility_level( self) /*MMGlobalProperty::_visibility_level*/;
+}
+void abstractmetamodel___MMGlobalProperty___visibility_level__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMGlobalProperty::visibility_level= (src/metamodel//abstractmetamodel.nit:559,2--563:46)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstractmetamodel___MMGlobalProperty____visibility_level( self) /*MMGlobalProperty::_visibility_level*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMLocalProperty___name(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalProperty::name (src/metamodel//abstractmetamodel.nit:569,2--570:28)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalProperty____name( self) /*MMLocalProperty::_name*/;
+}
+val_t abstractmetamodel___MMLocalProperty___local_class(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalProperty::local_class (src/metamodel//abstractmetamodel.nit:572,2--573:41)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalProperty____local_class( self) /*MMLocalProperty::_local_class*/;
+}
+val_t abstractmetamodel___MMLocalProperty___global(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalProperty::global (src/metamodel//abstractmetamodel.nit:575,2--576:40)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalProperty____global( self) /*MMLocalProperty::_global*/;
+}
+val_t abstractmetamodel___MMLocalProperty___super_prop(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalProperty::super_prop (src/metamodel//abstractmetamodel.nit:578,2--580:43)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalProperty____super_prop( self) /*MMLocalProperty::_super_prop*/;
+}
+val_t abstractmetamodel___MMLocalProperty___concrete_property(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalProperty::concrete_property (src/metamodel//abstractmetamodel.nit:582,2--584:53)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMLocalProperty____concrete_property( self) /*MMLocalProperty::_concrete_property*/;
+}
+val_t abstractmetamodel___MMLocalProperty___module(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalProperty::module (src/metamodel//abstractmetamodel.nit:586,2--587:52)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_abstractmetamodel___MMLocalProperty____local_class( self) /*MMLocalProperty::_local_class*/;
+  variable0 = ((abstractmetamodel___MMLocalClass___module_t)CALL(variable0,COLOR_abstractmetamodel___MMLocalClass___module))(variable0) /*MMLocalClass::module*/;
+  goto return_label48;
+  return_label48: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t abstractmetamodel___MMLocalProperty___full_name(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalProperty::full_name (src/metamodel//abstractmetamodel.nit:589,2--597:75)"};
+  val_t variable0;
+    val_t variable1;
+    val_t variable2;
+    val_t variable3;
+    val_t variable4;
+    val_t variable5;
+    val_t variable6;
+    val_t variable7;
+    val_t variable8;
+    val_t variable9;
+    val_t variable10;
+    val_t variable11;
+    val_t variable12;
+    val_t variable13;
+    val_t variable14;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___global))( self) /*MMLocalProperty::global*/;
+  variable0 = TAG_Bool((variable0 ==  NIT_NULL /*null*/) || ((variable0 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable0, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))(variable0,  NIT_NULL /*null*/) /*MMGlobalProperty::==*/)))));
+  if (UNTAG_Bool(variable0)) { /*if*/
+    variable0 = NEW_string___String___init(); /*new String*/
+    variable1 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+    variable2 = variable1;
+    ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable2) /*String::append*/;
+    variable3 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___local_class))( self) /*MMLocalProperty::local_class*/;
+    variable3 = ((abstractmetamodel___MMLocalClass___module_t)CALL(variable3,COLOR_abstractmetamodel___MMLocalClass___module))(variable3) /*MMLocalClass::module*/;
+    variable4 = variable3;
+    variable4 = ((string___String___to_s_t)CALL(variable4,COLOR_string___Object___to_s))(variable4) /*String::to_s*/;
+    ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable4) /*String::append*/;
+    variable5 = NEW_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
+    variable6 = variable5;
+    ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable6) /*String::append*/;
+    variable7 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___local_class))( self) /*MMLocalProperty::local_class*/;
+    variable8 = variable7;
+    variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
+    ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable8) /*String::append*/;
+    variable9 = NEW_string___String___with_native(BOX_NativeString("::(?::"), TAG_Int(6)); /*new String*/
+    variable10 = variable9;
+    ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable10) /*String::append*/;
+    variable11 = ((abstractmetamodel___MMLocalProperty___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___name))( self) /*MMLocalProperty::name*/;
+    variable12 = variable11;
+    variable12 = ((string___String___to_s_t)CALL(variable12,COLOR_string___Object___to_s))(variable12) /*String::to_s*/;
+    ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable12) /*String::append*/;
+    variable13 = NEW_string___String___with_native(BOX_NativeString(")"), TAG_Int(1)); /*new String*/
+    variable14 = variable13;
+    ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable14) /*String::append*/;
+    goto return_label49;
+  } else { /*if*/
+    variable0 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___global))( self) /*MMLocalProperty::global*/;
+    variable0 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL(variable0,COLOR_abstractmetamodel___MMGlobalProperty___intro))(variable0) /*MMGlobalProperty::intro*/;
+    variable0 = TAG_Bool((variable0 ==  self) || ((variable0 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable0, self)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))(variable0,  self) /*MMConcreteProperty::==*/)))));
+    if (UNTAG_Bool(variable0)) { /*if*/
+      variable0 = NEW_string___String___init(); /*new String*/
+      variable1 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+      variable2 = variable1;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable2) /*String::append*/;
+      variable3 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___local_class))( self) /*MMLocalProperty::local_class*/;
+      variable3 = ((abstractmetamodel___MMLocalClass___module_t)CALL(variable3,COLOR_abstractmetamodel___MMLocalClass___module))(variable3) /*MMLocalClass::module*/;
+      variable4 = variable3;
+      variable4 = ((string___String___to_s_t)CALL(variable4,COLOR_string___Object___to_s))(variable4) /*String::to_s*/;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable4) /*String::append*/;
+      variable5 = NEW_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
+      variable6 = variable5;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable6) /*String::append*/;
+      variable7 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___local_class))( self) /*MMLocalProperty::local_class*/;
+      variable8 = variable7;
+      variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable8) /*String::append*/;
+      variable9 = NEW_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
+      variable10 = variable9;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable10) /*String::append*/;
+      variable11 = ((abstractmetamodel___MMLocalProperty___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___name))( self) /*MMLocalProperty::name*/;
+      variable12 = variable11;
+      variable12 = ((string___String___to_s_t)CALL(variable12,COLOR_string___Object___to_s))(variable12) /*String::to_s*/;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable12) /*String::append*/;
+      variable13 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+      variable14 = variable13;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable14) /*String::append*/;
+      goto return_label49;
+    } else { /*if*/
+      variable0 = NEW_string___String___init(); /*new String*/
+      variable1 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+      variable2 = variable1;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable2) /*String::append*/;
+      variable3 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___local_class))( self) /*MMLocalProperty::local_class*/;
+      variable3 = ((abstractmetamodel___MMLocalClass___module_t)CALL(variable3,COLOR_abstractmetamodel___MMLocalClass___module))(variable3) /*MMLocalClass::module*/;
+      variable4 = variable3;
+      variable4 = ((string___String___to_s_t)CALL(variable4,COLOR_string___Object___to_s))(variable4) /*String::to_s*/;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable4) /*String::append*/;
+      variable5 = NEW_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
+      variable6 = variable5;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable6) /*String::append*/;
+      variable7 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___local_class))( self) /*MMLocalProperty::local_class*/;
+      variable8 = variable7;
+      variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable8) /*String::append*/;
+      variable9 = NEW_string___String___with_native(BOX_NativeString("::("), TAG_Int(3)); /*new String*/
+      variable10 = variable9;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable10) /*String::append*/;
+      variable11 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___global))( self) /*MMLocalProperty::global*/;
+      variable11 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL(variable11,COLOR_abstractmetamodel___MMGlobalProperty___intro))(variable11) /*MMGlobalProperty::intro*/;
+      variable11 = ((abstractmetamodel___MMLocalProperty___full_name_t)CALL(variable11,COLOR_abstractmetamodel___MMLocalProperty___full_name))(variable11) /*MMConcreteProperty::full_name*/;
+      variable12 = variable11;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable12) /*String::append*/;
+      variable13 = NEW_string___String___with_native(BOX_NativeString(")"), TAG_Int(1)); /*new String*/
+      variable14 = variable13;
+      ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable14) /*String::append*/;
+      goto return_label49;
+    }
+  }
+  return_label49: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void abstractmetamodel___MMLocalProperty___set_global(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalProperty::set_global (src/metamodel//abstractmetamodel.nit:601,2--606:43)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*g*/ ==  NIT_NULL /*null*/) || (( variable0 /*g*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*g*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*g*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*g*/,COLOR_kernel___Object_____eqeq))( variable0 /*g*/,  NIT_NULL /*null*/) /*MMGlobalProperty::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:604,3--18\n"); nit_exit(1);}
+  ATTR_abstractmetamodel___MMLocalProperty____global( self) /*MMLocalProperty::_global*/ =  variable0 /*g*/;
+  variable1 = ATTR_abstractmetamodel___MMLocalProperty____local_class( self) /*MMLocalProperty::_local_class*/;
+  ((abstractmetamodel___MMLocalClass___register_local_property_t)CALL(variable1,COLOR_abstractmetamodel___MMLocalClass___register_local_property))(variable1,  self) /*MMLocalClass::register_local_property*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMLocalProperty___to_s(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalProperty::to_s (src/metamodel//abstractmetamodel.nit:609,2--36)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstractmetamodel___MMLocalProperty___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___name))( self) /*MMLocalProperty::name*/;
+  variable0 = ((symbol___Symbol___to_s_t)CALL(variable0,COLOR_string___Object___to_s))(variable0) /*Symbol::to_s*/;
+  goto return_label51;
+  return_label51: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void abstractmetamodel___MMLocalProperty___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMLocalProperty::init (src/metamodel//abstractmetamodel.nit:611,2--615:25)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 =  param2;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMLocalProperty].i]) return;
+  ATTR_abstractmetamodel___MMLocalProperty____name( self) /*MMLocalProperty::_name*/ =  variable0 /*n*/;
+  ATTR_abstractmetamodel___MMLocalProperty____local_class( self) /*MMLocalProperty::_local_class*/ =  variable1 /*bc*/;
+  ATTR_abstractmetamodel___MMLocalProperty____concrete_property( self) /*MMLocalProperty::_concrete_property*/ =  variable2 /*i*/;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMLocalProperty].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t abstractmetamodel___MMConcreteProperty___cprhe(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMConcreteProperty::cprhe (src/metamodel//abstractmetamodel.nit:637,2--638:61)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMConcreteProperty____cprhe( self) /*MMConcreteProperty::_cprhe*/;
+}
+val_t abstractmetamodel___MMConcreteProperty___need_super(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMConcreteProperty::need_super (src/metamodel//abstractmetamodel.nit:640,2--641:41)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_abstractmetamodel___MMConcreteProperty____need_super( self) /*MMConcreteProperty::_need_super*/;
+}
+void abstractmetamodel___MMConcreteProperty___need_super__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMConcreteProperty::need_super= (src/metamodel//abstractmetamodel.nit:640,2--641:41)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_abstractmetamodel___MMConcreteProperty____need_super( self) /*MMConcreteProperty::_need_super*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+void abstractmetamodel___MMConcreteProperty___new_global(val_t  self) {
+  struct trace_t trace = {NULL, "abstractmetamodel::MMConcreteProperty::new_global (src/metamodel//abstractmetamodel.nit:643,2--648:47)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_abstractmetamodel___MMLocalProperty____global( self) /*MMConcreteProperty::_global*/;
+  variable0 = TAG_Bool((variable0 ==  NIT_NULL /*null*/) || ((variable0 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable0, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))(variable0,  NIT_NULL /*null*/) /*MMGlobalProperty::==*/)))));
+  if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert failed: src/metamodel//abstractmetamodel.nit:646,3--24\n"); nit_exit(1);}
+  variable0 = NEW_abstractmetamodel___MMGlobalProperty___init( self); /*new MMGlobalProperty*/
+  ATTR_abstractmetamodel___MMLocalProperty____global( self) /*MMConcreteProperty::_global*/ = variable0;
+  variable0 = ATTR_abstractmetamodel___MMLocalProperty____local_class( self) /*MMConcreteProperty::_local_class*/;
+  variable1 = ATTR_abstractmetamodel___MMLocalProperty____global( self) /*MMConcreteProperty::_global*/;
+  ((abstractmetamodel___MMLocalClass___register_global_property_t)CALL(variable0,COLOR_abstractmetamodel___MMLocalClass___register_global_property))(variable0, variable1) /*MMLocalClass::register_global_property*/;
+  tracehead = trace.prev;
+  return;
+}
diff --git a/c_src/abstractmetamodel._sep.h b/c_src/abstractmetamodel._sep.h
new file mode 100644 (file)
index 0000000..6749f84
--- /dev/null
@@ -0,0 +1,479 @@
+#ifndef abstractmetamodel__sep
+#define abstractmetamodel__sep
+#include "partial_order._sep.h"
+#include <nit_common.h>
+
+extern const classtable_elt_t VFT_MMContext[];
+
+extern const classtable_elt_t VFT_MMDirectory[];
+
+extern const classtable_elt_t VFT_MMModule[];
+
+extern const classtable_elt_t VFT_MMGlobalClass[];
+
+extern const classtable_elt_t VFT_MMLocalClass[];
+
+extern const classtable_elt_t VFT_MMGlobalProperty[];
+
+extern const classtable_elt_t VFT_MMLocalProperty[];
+
+extern const classtable_elt_t VFT_MMAttribute[];
+
+extern const classtable_elt_t VFT_MMMethod[];
+
+extern const classtable_elt_t VFT_MMConcreteClass[];
+
+extern const classtable_elt_t VFT_MMConcreteProperty[];
+extern const int SFT_abstractmetamodel[];
+#define ID_MMContext SFT_abstractmetamodel[0]
+#define COLOR_MMContext SFT_abstractmetamodel[1]
+#define COLOR_abstractmetamodel___MMContext____module_hierarchy SFT_abstractmetamodel[2]
+#define COLOR_abstractmetamodel___MMContext____class_hierarchy SFT_abstractmetamodel[3]
+#define COLOR_abstractmetamodel___MMContext____global_classes SFT_abstractmetamodel[4]
+#define COLOR_abstractmetamodel___MMContext____modules SFT_abstractmetamodel[5]
+#define INIT_TABLE_POS_MMContext SFT_abstractmetamodel[6]
+#define COLOR_abstractmetamodel___MMContext___init SFT_abstractmetamodel[7]
+#define COLOR_abstractmetamodel___MMContext___module_hierarchy SFT_abstractmetamodel[8]
+#define COLOR_abstractmetamodel___MMContext___class_hierarchy SFT_abstractmetamodel[9]
+#define COLOR_abstractmetamodel___MMContext___modules SFT_abstractmetamodel[10]
+#define COLOR_abstractmetamodel___MMContext___add_module SFT_abstractmetamodel[11]
+#define COLOR_abstractmetamodel___MMContext___add_global_class SFT_abstractmetamodel[12]
+#define COLOR_abstractmetamodel___MMContext___add_local_class SFT_abstractmetamodel[13]
+#define ID_MMDirectory SFT_abstractmetamodel[14]
+#define COLOR_MMDirectory SFT_abstractmetamodel[15]
+#define COLOR_abstractmetamodel___MMDirectory____name SFT_abstractmetamodel[16]
+#define COLOR_abstractmetamodel___MMDirectory____path SFT_abstractmetamodel[17]
+#define COLOR_abstractmetamodel___MMDirectory____parent SFT_abstractmetamodel[18]
+#define COLOR_abstractmetamodel___MMDirectory____owner SFT_abstractmetamodel[19]
+#define COLOR_abstractmetamodel___MMDirectory____modules SFT_abstractmetamodel[20]
+#define COLOR_abstractmetamodel___MMDirectory____dhe SFT_abstractmetamodel[21]
+#define INIT_TABLE_POS_MMDirectory SFT_abstractmetamodel[22]
+#define COLOR_abstractmetamodel___MMDirectory___name SFT_abstractmetamodel[23]
+#define COLOR_abstractmetamodel___MMDirectory___path SFT_abstractmetamodel[24]
+#define COLOR_abstractmetamodel___MMDirectory___parent SFT_abstractmetamodel[25]
+#define COLOR_abstractmetamodel___MMDirectory___owner SFT_abstractmetamodel[26]
+#define COLOR_abstractmetamodel___MMDirectory___owner__eq SFT_abstractmetamodel[27]
+#define COLOR_abstractmetamodel___MMDirectory___modules SFT_abstractmetamodel[28]
+#define COLOR_abstractmetamodel___MMDirectory___add_module SFT_abstractmetamodel[29]
+#define COLOR_abstractmetamodel___MMDirectory___dhe SFT_abstractmetamodel[30]
+#define COLOR_abstractmetamodel___MMDirectory___init SFT_abstractmetamodel[31]
+#define COLOR_abstractmetamodel___MMDirectory___full_name_for SFT_abstractmetamodel[32]
+#define ID_MMModule SFT_abstractmetamodel[33]
+#define COLOR_MMModule SFT_abstractmetamodel[34]
+#define COLOR_abstractmetamodel___MMModule____context SFT_abstractmetamodel[35]
+#define COLOR_abstractmetamodel___MMModule____name SFT_abstractmetamodel[36]
+#define COLOR_abstractmetamodel___MMModule____full_name SFT_abstractmetamodel[37]
+#define COLOR_abstractmetamodel___MMModule____directory SFT_abstractmetamodel[38]
+#define COLOR_abstractmetamodel___MMModule____mhe SFT_abstractmetamodel[39]
+#define COLOR_abstractmetamodel___MMModule____global_classes SFT_abstractmetamodel[40]
+#define COLOR_abstractmetamodel___MMModule____local_classes SFT_abstractmetamodel[41]
+#define COLOR_abstractmetamodel___MMModule____class_specialization_hierarchy SFT_abstractmetamodel[42]
+#define COLOR_abstractmetamodel___MMModule____intrude_modules SFT_abstractmetamodel[43]
+#define COLOR_abstractmetamodel___MMModule____public_modules SFT_abstractmetamodel[44]
+#define COLOR_abstractmetamodel___MMModule____private_modules SFT_abstractmetamodel[45]
+#define COLOR_abstractmetamodel___MMModule____explicit_imported_modules SFT_abstractmetamodel[46]
+#define COLOR_abstractmetamodel___MMModule____local_class_by_global SFT_abstractmetamodel[47]
+#define COLOR_abstractmetamodel___MMModule____global_class_by_name SFT_abstractmetamodel[48]
+#define INIT_TABLE_POS_MMModule SFT_abstractmetamodel[49]
+#define COLOR_abstractmetamodel___MMModule___context SFT_abstractmetamodel[50]
+#define COLOR_abstractmetamodel___MMModule___name SFT_abstractmetamodel[51]
+#define COLOR_abstractmetamodel___MMModule___full_name SFT_abstractmetamodel[52]
+#define COLOR_abstractmetamodel___MMModule___directory SFT_abstractmetamodel[53]
+#define COLOR_abstractmetamodel___MMModule___mhe SFT_abstractmetamodel[54]
+#define COLOR_abstractmetamodel___MMModule___global_classes SFT_abstractmetamodel[55]
+#define COLOR_abstractmetamodel___MMModule___local_classes SFT_abstractmetamodel[56]
+#define COLOR_abstractmetamodel___MMModule___class_specialization_hierarchy SFT_abstractmetamodel[57]
+#define COLOR_abstractmetamodel___MMModule___explicit_imported_modules SFT_abstractmetamodel[58]
+#define COLOR_abstractmetamodel___MMModule___init SFT_abstractmetamodel[59]
+#define COLOR_abstractmetamodel___MMModule___add_super_module SFT_abstractmetamodel[60]
+#define COLOR_abstractmetamodel___MMModule___visibility_for SFT_abstractmetamodel[61]
+#define COLOR_abstractmetamodel___MMModule_____bra SFT_abstractmetamodel[62]
+#define COLOR_abstractmetamodel___MMModule___add_local_class SFT_abstractmetamodel[63]
+#define COLOR_abstractmetamodel___MMModule___class_by_name SFT_abstractmetamodel[64]
+#define COLOR_abstractmetamodel___MMModule___has_global_class_named SFT_abstractmetamodel[65]
+#define COLOR_abstractmetamodel___MMModule___global_class_named SFT_abstractmetamodel[66]
+#define COLOR_abstractmetamodel___MMModule___set_supers_class SFT_abstractmetamodel[67]
+#define COLOR_abstractmetamodel___MMModule___register_global_class SFT_abstractmetamodel[68]
+#define ID_MMGlobalClass SFT_abstractmetamodel[69]
+#define COLOR_MMGlobalClass SFT_abstractmetamodel[70]
+#define COLOR_abstractmetamodel___MMGlobalClass____intro SFT_abstractmetamodel[71]
+#define COLOR_abstractmetamodel___MMGlobalClass____class_refinement_hierarchy SFT_abstractmetamodel[72]
+#define COLOR_abstractmetamodel___MMGlobalClass____is_interface SFT_abstractmetamodel[73]
+#define COLOR_abstractmetamodel___MMGlobalClass____is_abstract SFT_abstractmetamodel[74]
+#define COLOR_abstractmetamodel___MMGlobalClass____is_universal SFT_abstractmetamodel[75]
+#define COLOR_abstractmetamodel___MMGlobalClass____visibility_level SFT_abstractmetamodel[76]
+#define INIT_TABLE_POS_MMGlobalClass SFT_abstractmetamodel[77]
+#define COLOR_abstractmetamodel___MMGlobalClass___intro SFT_abstractmetamodel[78]
+#define COLOR_abstractmetamodel___MMGlobalClass___class_refinement_hierarchy SFT_abstractmetamodel[79]
+#define COLOR_abstractmetamodel___MMGlobalClass___init SFT_abstractmetamodel[80]
+#define COLOR_abstractmetamodel___MMGlobalClass___name SFT_abstractmetamodel[81]
+#define COLOR_abstractmetamodel___MMGlobalClass___module SFT_abstractmetamodel[82]
+#define COLOR_abstractmetamodel___MMGlobalClass___register_local_class SFT_abstractmetamodel[83]
+#define COLOR_abstractmetamodel___MMGlobalClass___is_interface SFT_abstractmetamodel[84]
+#define COLOR_abstractmetamodel___MMGlobalClass___is_interface__eq SFT_abstractmetamodel[85]
+#define COLOR_abstractmetamodel___MMGlobalClass___is_abstract SFT_abstractmetamodel[86]
+#define COLOR_abstractmetamodel___MMGlobalClass___is_abstract__eq SFT_abstractmetamodel[87]
+#define COLOR_abstractmetamodel___MMGlobalClass___is_universal SFT_abstractmetamodel[88]
+#define COLOR_abstractmetamodel___MMGlobalClass___is_universal__eq SFT_abstractmetamodel[89]
+#define COLOR_abstractmetamodel___MMGlobalClass___visibility_level SFT_abstractmetamodel[90]
+#define COLOR_abstractmetamodel___MMGlobalClass___visibility_level__eq SFT_abstractmetamodel[91]
+#define ID_MMLocalClass SFT_abstractmetamodel[92]
+#define COLOR_MMLocalClass SFT_abstractmetamodel[93]
+#define COLOR_abstractmetamodel___MMLocalClass____name SFT_abstractmetamodel[94]
+#define COLOR_abstractmetamodel___MMLocalClass____arity SFT_abstractmetamodel[95]
+#define COLOR_abstractmetamodel___MMLocalClass____module SFT_abstractmetamodel[96]
+#define COLOR_abstractmetamodel___MMLocalClass____abstract SFT_abstractmetamodel[97]
+#define COLOR_abstractmetamodel___MMLocalClass____global SFT_abstractmetamodel[98]
+#define COLOR_abstractmetamodel___MMLocalClass____crhe SFT_abstractmetamodel[99]
+#define COLOR_abstractmetamodel___MMLocalClass____cshe SFT_abstractmetamodel[100]
+#define COLOR_abstractmetamodel___MMLocalClass____che SFT_abstractmetamodel[101]
+#define COLOR_abstractmetamodel___MMLocalClass____local_property_by_global SFT_abstractmetamodel[102]
+#define COLOR_abstractmetamodel___MMLocalClass____global_properties SFT_abstractmetamodel[103]
+#define COLOR_abstractmetamodel___MMLocalClass____properties_by_name SFT_abstractmetamodel[104]
+#define INIT_TABLE_POS_MMLocalClass SFT_abstractmetamodel[105]
+#define COLOR_abstractmetamodel___MMLocalClass___name SFT_abstractmetamodel[106]
+#define COLOR_abstractmetamodel___MMLocalClass___arity SFT_abstractmetamodel[107]
+#define COLOR_abstractmetamodel___MMLocalClass___module SFT_abstractmetamodel[108]
+#define COLOR_abstractmetamodel___MMLocalClass___abstract SFT_abstractmetamodel[109]
+#define COLOR_abstractmetamodel___MMLocalClass___abstract__eq SFT_abstractmetamodel[110]
+#define COLOR_abstractmetamodel___MMLocalClass___global SFT_abstractmetamodel[111]
+#define COLOR_abstractmetamodel___MMLocalClass___crhe SFT_abstractmetamodel[112]
+#define COLOR_abstractmetamodel___MMLocalClass___cshe SFT_abstractmetamodel[113]
+#define COLOR_abstractmetamodel___MMLocalClass___che SFT_abstractmetamodel[114]
+#define COLOR_abstractmetamodel___MMLocalClass___local_property_by_global SFT_abstractmetamodel[115]
+#define COLOR_abstractmetamodel___MMLocalClass___global_properties SFT_abstractmetamodel[116]
+#define COLOR_abstractmetamodel___MMLocalClass___properties_by_name SFT_abstractmetamodel[117]
+#define COLOR_abstractmetamodel___MMLocalClass___init SFT_abstractmetamodel[118]
+#define COLOR_abstractmetamodel___MMLocalClass___for_module SFT_abstractmetamodel[119]
+#define COLOR_abstractmetamodel___MMLocalClass___new_global SFT_abstractmetamodel[120]
+#define COLOR_abstractmetamodel___MMLocalClass___set_global SFT_abstractmetamodel[121]
+#define COLOR_abstractmetamodel___MMLocalClass___has_global_property_by_name SFT_abstractmetamodel[122]
+#define COLOR_abstractmetamodel___MMLocalClass___get_property_by_name SFT_abstractmetamodel[123]
+#define COLOR_abstractmetamodel___MMLocalClass___attribute SFT_abstractmetamodel[124]
+#define COLOR_abstractmetamodel___MMLocalClass___method SFT_abstractmetamodel[125]
+#define COLOR_abstractmetamodel___MMLocalClass___super_methods_named SFT_abstractmetamodel[126]
+#define COLOR_abstractmetamodel___MMLocalClass___register_local_property SFT_abstractmetamodel[127]
+#define COLOR_abstractmetamodel___MMLocalClass___register_global_property SFT_abstractmetamodel[128]
+#define COLOR_abstractmetamodel___MMLocalClass_____bra SFT_abstractmetamodel[129]
+#define COLOR_abstractmetamodel___MMLocalClass___context SFT_abstractmetamodel[130]
+#define ID_MMGlobalProperty SFT_abstractmetamodel[131]
+#define COLOR_MMGlobalProperty SFT_abstractmetamodel[132]
+#define COLOR_abstractmetamodel___MMGlobalProperty____intro SFT_abstractmetamodel[133]
+#define COLOR_abstractmetamodel___MMGlobalProperty____concrete_property_hierarchy SFT_abstractmetamodel[134]
+#define COLOR_abstractmetamodel___MMGlobalProperty____is_init SFT_abstractmetamodel[135]
+#define COLOR_abstractmetamodel___MMGlobalProperty____visibility_level SFT_abstractmetamodel[136]
+#define INIT_TABLE_POS_MMGlobalProperty SFT_abstractmetamodel[137]
+#define COLOR_abstractmetamodel___MMGlobalProperty___intro SFT_abstractmetamodel[138]
+#define COLOR_abstractmetamodel___MMGlobalProperty___local_class SFT_abstractmetamodel[139]
+#define COLOR_abstractmetamodel___MMGlobalProperty___concrete_property_hierarchy SFT_abstractmetamodel[140]
+#define COLOR_abstractmetamodel___MMGlobalProperty___init SFT_abstractmetamodel[141]
+#define COLOR_abstractmetamodel___MMGlobalProperty___add_concrete_property SFT_abstractmetamodel[142]
+#define COLOR_abstractmetamodel___MMGlobalProperty___is_attribute SFT_abstractmetamodel[143]
+#define COLOR_abstractmetamodel___MMGlobalProperty___is_method SFT_abstractmetamodel[144]
+#define COLOR_abstractmetamodel___MMGlobalProperty___is_init SFT_abstractmetamodel[145]
+#define COLOR_abstractmetamodel___MMGlobalProperty___is_init__eq SFT_abstractmetamodel[146]
+#define COLOR_abstractmetamodel___MMGlobalProperty___visibility_level SFT_abstractmetamodel[147]
+#define COLOR_abstractmetamodel___MMGlobalProperty___visibility_level__eq SFT_abstractmetamodel[148]
+#define ID_MMLocalProperty SFT_abstractmetamodel[149]
+#define COLOR_MMLocalProperty SFT_abstractmetamodel[150]
+#define COLOR_abstractmetamodel___MMLocalProperty____name SFT_abstractmetamodel[151]
+#define COLOR_abstractmetamodel___MMLocalProperty____local_class SFT_abstractmetamodel[152]
+#define COLOR_abstractmetamodel___MMLocalProperty____global SFT_abstractmetamodel[153]
+#define COLOR_abstractmetamodel___MMLocalProperty____super_prop SFT_abstractmetamodel[154]
+#define COLOR_abstractmetamodel___MMLocalProperty____concrete_property SFT_abstractmetamodel[155]
+#define INIT_TABLE_POS_MMLocalProperty SFT_abstractmetamodel[156]
+#define COLOR_abstractmetamodel___MMLocalProperty___name SFT_abstractmetamodel[157]
+#define COLOR_abstractmetamodel___MMLocalProperty___local_class SFT_abstractmetamodel[158]
+#define COLOR_abstractmetamodel___MMLocalProperty___global SFT_abstractmetamodel[159]
+#define COLOR_abstractmetamodel___MMLocalProperty___super_prop SFT_abstractmetamodel[160]
+#define COLOR_abstractmetamodel___MMLocalProperty___concrete_property SFT_abstractmetamodel[161]
+#define COLOR_abstractmetamodel___MMLocalProperty___module SFT_abstractmetamodel[162]
+#define COLOR_abstractmetamodel___MMLocalProperty___full_name SFT_abstractmetamodel[163]
+#define COLOR_abstractmetamodel___MMLocalProperty___set_global SFT_abstractmetamodel[164]
+#define COLOR_abstractmetamodel___MMLocalProperty___init SFT_abstractmetamodel[165]
+#define ID_MMAttribute SFT_abstractmetamodel[166]
+#define COLOR_MMAttribute SFT_abstractmetamodel[167]
+#define INIT_TABLE_POS_MMAttribute SFT_abstractmetamodel[168]
+#define ID_MMMethod SFT_abstractmetamodel[169]
+#define COLOR_MMMethod SFT_abstractmetamodel[170]
+#define INIT_TABLE_POS_MMMethod SFT_abstractmetamodel[171]
+#define ID_MMConcreteClass SFT_abstractmetamodel[172]
+#define COLOR_MMConcreteClass SFT_abstractmetamodel[173]
+#define INIT_TABLE_POS_MMConcreteClass SFT_abstractmetamodel[174]
+#define ID_MMConcreteProperty SFT_abstractmetamodel[175]
+#define COLOR_MMConcreteProperty SFT_abstractmetamodel[176]
+#define COLOR_abstractmetamodel___MMConcreteProperty____cprhe SFT_abstractmetamodel[177]
+#define COLOR_abstractmetamodel___MMConcreteProperty____need_super SFT_abstractmetamodel[178]
+#define INIT_TABLE_POS_MMConcreteProperty SFT_abstractmetamodel[179]
+#define COLOR_abstractmetamodel___MMConcreteProperty___cprhe SFT_abstractmetamodel[180]
+#define COLOR_abstractmetamodel___MMConcreteProperty___need_super SFT_abstractmetamodel[181]
+#define COLOR_abstractmetamodel___MMConcreteProperty___need_super__eq SFT_abstractmetamodel[182]
+#define COLOR_abstractmetamodel___MMConcreteProperty___new_global SFT_abstractmetamodel[183]
+typedef void (* abstractmetamodel___MMContext___init_t)(val_t  self, int* init_table);
+void abstractmetamodel___MMContext___init(val_t  self, int* init_table);
+val_t NEW_abstractmetamodel___MMContext___init();
+#define ATTR_abstractmetamodel___MMContext____module_hierarchy(recv) ATTR(recv, COLOR_abstractmetamodel___MMContext____module_hierarchy)
+typedef val_t (* abstractmetamodel___MMContext___module_hierarchy_t)(val_t  self);
+val_t abstractmetamodel___MMContext___module_hierarchy(val_t  self);
+#define ATTR_abstractmetamodel___MMContext____class_hierarchy(recv) ATTR(recv, COLOR_abstractmetamodel___MMContext____class_hierarchy)
+typedef val_t (* abstractmetamodel___MMContext___class_hierarchy_t)(val_t  self);
+val_t abstractmetamodel___MMContext___class_hierarchy(val_t  self);
+#define ATTR_abstractmetamodel___MMContext____global_classes(recv) ATTR(recv, COLOR_abstractmetamodel___MMContext____global_classes)
+#define ATTR_abstractmetamodel___MMContext____modules(recv) ATTR(recv, COLOR_abstractmetamodel___MMContext____modules)
+typedef val_t (* abstractmetamodel___MMContext___modules_t)(val_t  self);
+val_t abstractmetamodel___MMContext___modules(val_t  self);
+typedef void (* abstractmetamodel___MMContext___add_module_t)(val_t  self, val_t  param0, val_t  param1);
+void abstractmetamodel___MMContext___add_module(val_t  self, val_t  param0, val_t  param1);
+typedef void (* abstractmetamodel___MMContext___add_global_class_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMContext___add_global_class(val_t  self, val_t  param0);
+typedef void (* abstractmetamodel___MMContext___add_local_class_t)(val_t  self, val_t  param0, val_t  param1);
+void abstractmetamodel___MMContext___add_local_class(val_t  self, val_t  param0, val_t  param1);
+#define ATTR_abstractmetamodel___MMDirectory____name(recv) ATTR(recv, COLOR_abstractmetamodel___MMDirectory____name)
+typedef val_t (* abstractmetamodel___MMDirectory___name_t)(val_t  self);
+val_t abstractmetamodel___MMDirectory___name(val_t  self);
+#define ATTR_abstractmetamodel___MMDirectory____path(recv) ATTR(recv, COLOR_abstractmetamodel___MMDirectory____path)
+typedef val_t (* abstractmetamodel___MMDirectory___path_t)(val_t  self);
+val_t abstractmetamodel___MMDirectory___path(val_t  self);
+#define ATTR_abstractmetamodel___MMDirectory____parent(recv) ATTR(recv, COLOR_abstractmetamodel___MMDirectory____parent)
+typedef val_t (* abstractmetamodel___MMDirectory___parent_t)(val_t  self);
+val_t abstractmetamodel___MMDirectory___parent(val_t  self);
+#define ATTR_abstractmetamodel___MMDirectory____owner(recv) ATTR(recv, COLOR_abstractmetamodel___MMDirectory____owner)
+typedef val_t (* abstractmetamodel___MMDirectory___owner_t)(val_t  self);
+val_t abstractmetamodel___MMDirectory___owner(val_t  self);
+typedef void (* abstractmetamodel___MMDirectory___owner__eq_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMDirectory___owner__eq(val_t  self, val_t  param0);
+#define ATTR_abstractmetamodel___MMDirectory____modules(recv) ATTR(recv, COLOR_abstractmetamodel___MMDirectory____modules)
+typedef val_t (* abstractmetamodel___MMDirectory___modules_t)(val_t  self);
+val_t abstractmetamodel___MMDirectory___modules(val_t  self);
+typedef void (* abstractmetamodel___MMDirectory___add_module_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMDirectory___add_module(val_t  self, val_t  param0);
+#define ATTR_abstractmetamodel___MMDirectory____dhe(recv) ATTR(recv, COLOR_abstractmetamodel___MMDirectory____dhe)
+typedef val_t (* abstractmetamodel___MMDirectory___dhe_t)(val_t  self);
+val_t abstractmetamodel___MMDirectory___dhe(val_t  self);
+typedef void (* abstractmetamodel___MMDirectory___init_t)(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table);
+void abstractmetamodel___MMDirectory___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table);
+val_t NEW_abstractmetamodel___MMDirectory___init(val_t  param0, val_t  param1, val_t  param2);
+typedef val_t (* abstractmetamodel___MMDirectory___full_name_for_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMDirectory___full_name_for(val_t  self, val_t  param0);
+#define ATTR_abstractmetamodel___MMModule____context(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____context)
+typedef val_t (* abstractmetamodel___MMModule___context_t)(val_t  self);
+val_t abstractmetamodel___MMModule___context(val_t  self);
+#define ATTR_abstractmetamodel___MMModule____name(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____name)
+typedef val_t (* abstractmetamodel___MMModule___name_t)(val_t  self);
+val_t abstractmetamodel___MMModule___name(val_t  self);
+#define ATTR_abstractmetamodel___MMModule____full_name(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____full_name)
+typedef val_t (* abstractmetamodel___MMModule___full_name_t)(val_t  self);
+val_t abstractmetamodel___MMModule___full_name(val_t  self);
+#define ATTR_abstractmetamodel___MMModule____directory(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____directory)
+typedef val_t (* abstractmetamodel___MMModule___directory_t)(val_t  self);
+val_t abstractmetamodel___MMModule___directory(val_t  self);
+#define ATTR_abstractmetamodel___MMModule____mhe(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____mhe)
+typedef val_t (* abstractmetamodel___MMModule___mhe_t)(val_t  self);
+val_t abstractmetamodel___MMModule___mhe(val_t  self);
+#define ATTR_abstractmetamodel___MMModule____global_classes(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____global_classes)
+typedef val_t (* abstractmetamodel___MMModule___global_classes_t)(val_t  self);
+val_t abstractmetamodel___MMModule___global_classes(val_t  self);
+#define ATTR_abstractmetamodel___MMModule____local_classes(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____local_classes)
+typedef val_t (* abstractmetamodel___MMModule___local_classes_t)(val_t  self);
+val_t abstractmetamodel___MMModule___local_classes(val_t  self);
+#define ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____class_specialization_hierarchy)
+typedef val_t (* abstractmetamodel___MMModule___class_specialization_hierarchy_t)(val_t  self);
+val_t abstractmetamodel___MMModule___class_specialization_hierarchy(val_t  self);
+#define ATTR_abstractmetamodel___MMModule____intrude_modules(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____intrude_modules)
+#define ATTR_abstractmetamodel___MMModule____public_modules(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____public_modules)
+#define ATTR_abstractmetamodel___MMModule____private_modules(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____private_modules)
+#define ATTR_abstractmetamodel___MMModule____explicit_imported_modules(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____explicit_imported_modules)
+typedef val_t (* abstractmetamodel___MMModule___explicit_imported_modules_t)(val_t  self);
+val_t abstractmetamodel___MMModule___explicit_imported_modules(val_t  self);
+#define ATTR_abstractmetamodel___MMModule____local_class_by_global(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____local_class_by_global)
+#define ATTR_abstractmetamodel___MMModule____global_class_by_name(recv) ATTR(recv, COLOR_abstractmetamodel___MMModule____global_class_by_name)
+typedef void (* abstractmetamodel___MMModule___init_t)(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table);
+void abstractmetamodel___MMModule___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table);
+val_t NEW_abstractmetamodel___MMModule___init(val_t  param0, val_t  param1, val_t  param2);
+typedef void (* abstractmetamodel___MMModule___add_super_module_t)(val_t  self, val_t  param0, val_t  param1);
+void abstractmetamodel___MMModule___add_super_module(val_t  self, val_t  param0, val_t  param1);
+typedef val_t (* abstractmetamodel___MMModule___visibility_for_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMModule___visibility_for(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMModule_____bra_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMModule_____bra(val_t  self, val_t  param0);
+typedef void (* abstractmetamodel___MMModule___add_local_class_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMModule___add_local_class(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMModule___class_by_name_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMModule___class_by_name(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMModule___has_global_class_named_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMModule___has_global_class_named(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMModule___global_class_named_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMModule___global_class_named(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMModule___to_s_t)(val_t  self);
+val_t abstractmetamodel___MMModule___to_s(val_t  self);
+typedef void (* abstractmetamodel___MMModule___set_supers_class_t)(val_t  self, val_t  param0, val_t  param1);
+void abstractmetamodel___MMModule___set_supers_class(val_t  self, val_t  param0, val_t  param1);
+typedef void (* abstractmetamodel___MMModule___register_global_class_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMModule___register_global_class(val_t  self, val_t  param0);
+#define ATTR_abstractmetamodel___MMGlobalClass____intro(recv) ATTR(recv, COLOR_abstractmetamodel___MMGlobalClass____intro)
+typedef val_t (* abstractmetamodel___MMGlobalClass___intro_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalClass___intro(val_t  self);
+#define ATTR_abstractmetamodel___MMGlobalClass____class_refinement_hierarchy(recv) ATTR(recv, COLOR_abstractmetamodel___MMGlobalClass____class_refinement_hierarchy)
+typedef val_t (* abstractmetamodel___MMGlobalClass___class_refinement_hierarchy_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalClass___class_refinement_hierarchy(val_t  self);
+typedef void (* abstractmetamodel___MMGlobalClass___init_t)(val_t  self, val_t  param0, int* init_table);
+void abstractmetamodel___MMGlobalClass___init(val_t  self, val_t  param0, int* init_table);
+val_t NEW_abstractmetamodel___MMGlobalClass___init(val_t  param0);
+typedef val_t (* abstractmetamodel___MMGlobalClass___name_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalClass___name(val_t  self);
+typedef val_t (* abstractmetamodel___MMGlobalClass___module_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalClass___module(val_t  self);
+typedef val_t (* abstractmetamodel___MMGlobalClass___to_s_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalClass___to_s(val_t  self);
+typedef void (* abstractmetamodel___MMGlobalClass___register_local_class_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMGlobalClass___register_local_class(val_t  self, val_t  param0);
+#define ATTR_abstractmetamodel___MMGlobalClass____is_interface(recv) ATTR(recv, COLOR_abstractmetamodel___MMGlobalClass____is_interface)
+typedef val_t (* abstractmetamodel___MMGlobalClass___is_interface_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalClass___is_interface(val_t  self);
+typedef void (* abstractmetamodel___MMGlobalClass___is_interface__eq_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMGlobalClass___is_interface__eq(val_t  self, val_t  param0);
+#define ATTR_abstractmetamodel___MMGlobalClass____is_abstract(recv) ATTR(recv, COLOR_abstractmetamodel___MMGlobalClass____is_abstract)
+typedef val_t (* abstractmetamodel___MMGlobalClass___is_abstract_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalClass___is_abstract(val_t  self);
+typedef void (* abstractmetamodel___MMGlobalClass___is_abstract__eq_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMGlobalClass___is_abstract__eq(val_t  self, val_t  param0);
+#define ATTR_abstractmetamodel___MMGlobalClass____is_universal(recv) ATTR(recv, COLOR_abstractmetamodel___MMGlobalClass____is_universal)
+typedef val_t (* abstractmetamodel___MMGlobalClass___is_universal_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalClass___is_universal(val_t  self);
+typedef void (* abstractmetamodel___MMGlobalClass___is_universal__eq_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMGlobalClass___is_universal__eq(val_t  self, val_t  param0);
+#define ATTR_abstractmetamodel___MMGlobalClass____visibility_level(recv) ATTR(recv, COLOR_abstractmetamodel___MMGlobalClass____visibility_level)
+typedef val_t (* abstractmetamodel___MMGlobalClass___visibility_level_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalClass___visibility_level(val_t  self);
+typedef void (* abstractmetamodel___MMGlobalClass___visibility_level__eq_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMGlobalClass___visibility_level__eq(val_t  self, val_t  param0);
+#define ATTR_abstractmetamodel___MMLocalClass____name(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalClass____name)
+typedef val_t (* abstractmetamodel___MMLocalClass___name_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___name(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalClass____arity(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalClass____arity)
+typedef val_t (* abstractmetamodel___MMLocalClass___arity_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___arity(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalClass____module(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalClass____module)
+typedef val_t (* abstractmetamodel___MMLocalClass___module_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___module(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalClass____abstract(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalClass____abstract)
+typedef val_t (* abstractmetamodel___MMLocalClass___abstract_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___abstract(val_t  self);
+typedef void (* abstractmetamodel___MMLocalClass___abstract__eq_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMLocalClass___abstract__eq(val_t  self, val_t  param0);
+#define ATTR_abstractmetamodel___MMLocalClass____global(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalClass____global)
+typedef val_t (* abstractmetamodel___MMLocalClass___global_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___global(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalClass____crhe(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalClass____crhe)
+typedef val_t (* abstractmetamodel___MMLocalClass___crhe_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___crhe(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalClass____cshe(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalClass____cshe)
+typedef val_t (* abstractmetamodel___MMLocalClass___cshe_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___cshe(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalClass____che(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalClass____che)
+typedef val_t (* abstractmetamodel___MMLocalClass___che_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___che(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalClass____local_property_by_global(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalClass____local_property_by_global)
+typedef val_t (* abstractmetamodel___MMLocalClass___local_property_by_global_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___local_property_by_global(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalClass____global_properties(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalClass____global_properties)
+typedef val_t (* abstractmetamodel___MMLocalClass___global_properties_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___global_properties(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalClass____properties_by_name(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalClass____properties_by_name)
+typedef val_t (* abstractmetamodel___MMLocalClass___properties_by_name_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___properties_by_name(val_t  self);
+typedef void (* abstractmetamodel___MMLocalClass___init_t)(val_t  self, val_t  param0, val_t  param1, int* init_table);
+void abstractmetamodel___MMLocalClass___init(val_t  self, val_t  param0, val_t  param1, int* init_table);
+val_t NEW_abstractmetamodel___MMLocalClass___init(val_t  param0, val_t  param1);
+typedef val_t (* abstractmetamodel___MMLocalClass___for_module_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMLocalClass___for_module(val_t  self, val_t  param0);
+typedef void (* abstractmetamodel___MMLocalClass___new_global_t)(val_t  self);
+void abstractmetamodel___MMLocalClass___new_global(val_t  self);
+typedef void (* abstractmetamodel___MMLocalClass___set_global_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMLocalClass___set_global(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMLocalClass___has_global_property_by_name_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMLocalClass___has_global_property_by_name(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMLocalClass___get_property_by_name_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMLocalClass___get_property_by_name(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMLocalClass___attribute_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMLocalClass___attribute(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMLocalClass___method_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMLocalClass___method(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMLocalClass___super_methods_named_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMLocalClass___super_methods_named(val_t  self, val_t  param0);
+typedef void (* abstractmetamodel___MMLocalClass___register_local_property_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMLocalClass___register_local_property(val_t  self, val_t  param0);
+typedef void (* abstractmetamodel___MMLocalClass___register_global_property_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMLocalClass___register_global_property(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMLocalClass_____bra_t)(val_t  self, val_t  param0);
+val_t abstractmetamodel___MMLocalClass_____bra(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMLocalClass___context_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___context(val_t  self);
+typedef val_t (* abstractmetamodel___MMLocalClass___to_s_t)(val_t  self);
+val_t abstractmetamodel___MMLocalClass___to_s(val_t  self);
+#define ATTR_abstractmetamodel___MMGlobalProperty____intro(recv) ATTR(recv, COLOR_abstractmetamodel___MMGlobalProperty____intro)
+typedef val_t (* abstractmetamodel___MMGlobalProperty___intro_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalProperty___intro(val_t  self);
+typedef val_t (* abstractmetamodel___MMGlobalProperty___local_class_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalProperty___local_class(val_t  self);
+#define ATTR_abstractmetamodel___MMGlobalProperty____concrete_property_hierarchy(recv) ATTR(recv, COLOR_abstractmetamodel___MMGlobalProperty____concrete_property_hierarchy)
+typedef val_t (* abstractmetamodel___MMGlobalProperty___concrete_property_hierarchy_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalProperty___concrete_property_hierarchy(val_t  self);
+typedef void (* abstractmetamodel___MMGlobalProperty___init_t)(val_t  self, val_t  param0, int* init_table);
+void abstractmetamodel___MMGlobalProperty___init(val_t  self, val_t  param0, int* init_table);
+val_t NEW_abstractmetamodel___MMGlobalProperty___init(val_t  param0);
+typedef val_t (* abstractmetamodel___MMGlobalProperty___to_s_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalProperty___to_s(val_t  self);
+typedef void (* abstractmetamodel___MMGlobalProperty___add_concrete_property_t)(val_t  self, val_t  param0, val_t  param1);
+void abstractmetamodel___MMGlobalProperty___add_concrete_property(val_t  self, val_t  param0, val_t  param1);
+typedef val_t (* abstractmetamodel___MMGlobalProperty___is_attribute_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalProperty___is_attribute(val_t  self);
+typedef val_t (* abstractmetamodel___MMGlobalProperty___is_method_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalProperty___is_method(val_t  self);
+#define ATTR_abstractmetamodel___MMGlobalProperty____is_init(recv) ATTR(recv, COLOR_abstractmetamodel___MMGlobalProperty____is_init)
+typedef val_t (* abstractmetamodel___MMGlobalProperty___is_init_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalProperty___is_init(val_t  self);
+typedef void (* abstractmetamodel___MMGlobalProperty___is_init__eq_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMGlobalProperty___is_init__eq(val_t  self, val_t  param0);
+#define ATTR_abstractmetamodel___MMGlobalProperty____visibility_level(recv) ATTR(recv, COLOR_abstractmetamodel___MMGlobalProperty____visibility_level)
+typedef val_t (* abstractmetamodel___MMGlobalProperty___visibility_level_t)(val_t  self);
+val_t abstractmetamodel___MMGlobalProperty___visibility_level(val_t  self);
+typedef void (* abstractmetamodel___MMGlobalProperty___visibility_level__eq_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMGlobalProperty___visibility_level__eq(val_t  self, val_t  param0);
+#define ATTR_abstractmetamodel___MMLocalProperty____name(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalProperty____name)
+typedef val_t (* abstractmetamodel___MMLocalProperty___name_t)(val_t  self);
+val_t abstractmetamodel___MMLocalProperty___name(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalProperty____local_class(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalProperty____local_class)
+typedef val_t (* abstractmetamodel___MMLocalProperty___local_class_t)(val_t  self);
+val_t abstractmetamodel___MMLocalProperty___local_class(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalProperty____global(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalProperty____global)
+typedef val_t (* abstractmetamodel___MMLocalProperty___global_t)(val_t  self);
+val_t abstractmetamodel___MMLocalProperty___global(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalProperty____super_prop(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalProperty____super_prop)
+typedef val_t (* abstractmetamodel___MMLocalProperty___super_prop_t)(val_t  self);
+val_t abstractmetamodel___MMLocalProperty___super_prop(val_t  self);
+#define ATTR_abstractmetamodel___MMLocalProperty____concrete_property(recv) ATTR(recv, COLOR_abstractmetamodel___MMLocalProperty____concrete_property)
+typedef val_t (* abstractmetamodel___MMLocalProperty___concrete_property_t)(val_t  self);
+val_t abstractmetamodel___MMLocalProperty___concrete_property(val_t  self);
+typedef val_t (* abstractmetamodel___MMLocalProperty___module_t)(val_t  self);
+val_t abstractmetamodel___MMLocalProperty___module(val_t  self);
+typedef val_t (* abstractmetamodel___MMLocalProperty___full_name_t)(val_t  self);
+val_t abstractmetamodel___MMLocalProperty___full_name(val_t  self);
+typedef void (* abstractmetamodel___MMLocalProperty___set_global_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMLocalProperty___set_global(val_t  self, val_t  param0);
+typedef val_t (* abstractmetamodel___MMLocalProperty___to_s_t)(val_t  self);
+val_t abstractmetamodel___MMLocalProperty___to_s(val_t  self);
+typedef void (* abstractmetamodel___MMLocalProperty___init_t)(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table);
+void abstractmetamodel___MMLocalProperty___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table);
+val_t NEW_abstractmetamodel___MMLocalProperty___init(val_t  param0, val_t  param1, val_t  param2);
+#define ATTR_abstractmetamodel___MMConcreteProperty____cprhe(recv) ATTR(recv, COLOR_abstractmetamodel___MMConcreteProperty____cprhe)
+typedef val_t (* abstractmetamodel___MMConcreteProperty___cprhe_t)(val_t  self);
+val_t abstractmetamodel___MMConcreteProperty___cprhe(val_t  self);
+#define ATTR_abstractmetamodel___MMConcreteProperty____need_super(recv) ATTR(recv, COLOR_abstractmetamodel___MMConcreteProperty____need_super)
+typedef val_t (* abstractmetamodel___MMConcreteProperty___need_super_t)(val_t  self);
+val_t abstractmetamodel___MMConcreteProperty___need_super(val_t  self);
+typedef void (* abstractmetamodel___MMConcreteProperty___need_super__eq_t)(val_t  self, val_t  param0);
+void abstractmetamodel___MMConcreteProperty___need_super__eq(val_t  self, val_t  param0);
+typedef void (* abstractmetamodel___MMConcreteProperty___new_global_t)(val_t  self);
+void abstractmetamodel___MMConcreteProperty___new_global(val_t  self);
+#endif
diff --git a/c_src/abstracttool._sep.c b/c_src/abstracttool._sep.c
new file mode 100644 (file)
index 0000000..cf4916d
--- /dev/null
@@ -0,0 +1,321 @@
+#include "abstracttool._sep.h"
+void abstracttool___AbstractCompiler___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, "abstracttool::AbstractCompiler::init (src/abstracttool.nit:28,2--31:37)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AbstractCompiler].i]) return;
+  ((mmloader___ToolContext___init_t)CALL( self,COLOR_mmloader___ToolContext___init))( self, init_table /*YYY*/) /*ToolContext::init*/;
+  variable0 = NEW_syntax___SrcModuleLoader___init(); /*new SrcModuleLoader*/
+  ((mmloader___ToolContext___register_loader_t)CALL( self,COLOR_mmloader___ToolContext___register_loader))( self, variable0) /*AbstractCompiler::register_loader*/;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AbstractCompiler].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void abstracttool___AbstractCompiler___exec_cmd_line(val_t  self) {
+  struct trace_t trace = {NULL, "abstracttool::AbstractCompiler::exec_cmd_line (src/abstracttool.nit:34,2--59:21)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+    val_t variable4;
+    val_t variable5;
+    val_t variable6;
+    val_t variable7;
+  trace.prev = tracehead; tracehead = &trace;
+  ((mmloader___ToolContext___process_options_t)CALL( self,COLOR_mmloader___ToolContext___process_options))( self) /*AbstractCompiler::process_options*/;
+  variable0 = ((mmloader___ToolContext___opt_help_t)CALL( self,COLOR_mmloader___ToolContext___opt_help))( self) /*AbstractCompiler::opt_help*/;
+  variable0 = ((opts___Option___value_t)CALL(variable0,COLOR_opts___Option___value))(variable0) /*OptionBool::value*/;
+  if (UNTAG_Bool(variable0)) { /*if*/
+    variable0 = ((mmloader___ToolContext___option_context_t)CALL( self,COLOR_mmloader___ToolContext___option_context))( self) /*AbstractCompiler::option_context*/;
+    ((opts___OptionContext___usage_t)CALL(variable0,COLOR_opts___OptionContext___usage))(variable0) /*OptionContext::usage*/;
+    exit(UNTAG_Int( TAG_Int(0)));
+  }
+  variable0 = ((mmloader___ToolContext___option_context_t)CALL( self,COLOR_mmloader___ToolContext___option_context))( self) /*AbstractCompiler::option_context*/;
+  variable0 = ((opts___OptionContext___rest_t)CALL(variable0,COLOR_opts___OptionContext___rest))(variable0) /*OptionContext::rest*/;
+  variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*Array::length*/;
+  variable0 = TAG_Bool((variable0)==( TAG_Int(0)));
+  if (UNTAG_Bool(variable0)) { /*if*/
+    variable0 = ((mmloader___ToolContext___option_context_t)CALL( self,COLOR_mmloader___ToolContext___option_context))( self) /*AbstractCompiler::option_context*/;
+    ((opts___OptionContext___usage_t)CALL(variable0,COLOR_opts___OptionContext___usage))(variable0) /*OptionContext::usage*/;
+    exit(UNTAG_Int( TAG_Int(1)));
+  }
+  variable1 = ((mmloader___ToolContext___option_context_t)CALL( self,COLOR_mmloader___ToolContext___option_context))( self) /*AbstractCompiler::option_context*/;
+  variable1 = ((opts___OptionContext___rest_t)CALL(variable1,COLOR_opts___OptionContext___rest))(variable1) /*OptionContext::rest*/;
+  variable0 = variable1;
+  variable2 = NEW_array___Array___init(); /*new Array[MMModule]*/
+  variable1 = variable2;
+  variable2 = ((array___AbstractArray___length_t)CALL( variable0 /*rest*/,COLOR_abstract_collection___Collection___length))( variable0 /*rest*/) /*Array::length*/;
+  variable3 = NEW_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
+  variable2 = variable3;
+  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  while (true) { /*for*/
+    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable3)) break; /*for*/
+    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
+    variable5 =  variable3 /*i*/;
+    variable6 = TAG_Bool(UNTAG_Int( variable5 /*index*/)>=UNTAG_Int( TAG_Int(0)));
+    variable7 = variable6;
+    if (UNTAG_Bool(variable7)) { /* and */
+      variable7 = ATTR_array___AbstractArray____length( variable0 /*rest*/) /*Array::_length*/;
+      variable7 = TAG_Bool(UNTAG_Int( variable5 /*index*/)<UNTAG_Int(variable7));
+    }
+    variable6 = variable7;
+    if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert 'index'  failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
+    variable6 = ATTR_array___Array____items( variable0 /*rest*/) /*Array::_items*/;
+    variable6 = UNBOX_NativeArray(variable6)[UNTAG_Int( variable5 /*index*/)];
+    goto return_label3;
+    return_label3: while(false);
+    variable5 = variable6;
+    variable5 = ((mmloader___ToolContext___get_module_from_filename_t)CALL( self,COLOR_mmloader___ToolContext___get_module_from_filename))( self, variable5) /*AbstractCompiler::get_module_from_filename*/;
+    variable4 = variable5;
+    ((array___AbstractArray___add_t)CALL( variable1 /*to_do*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*to_do*/,  variable4 /*mod*/) /*Array::add*/;
+    continue_2: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+  }
+  break_2: while(0);
+  variable2 = ((mmloader___ToolContext___opt_log_t)CALL( self,COLOR_mmloader___ToolContext___opt_log))( self) /*AbstractCompiler::opt_log*/;
+  variable2 = ((opts___Option___value_t)CALL(variable2,COLOR_opts___Option___value))(variable2) /*OptionBool::value*/;
+  if (UNTAG_Bool(variable2)) { /*if*/
+    ((abstracttool___AbstractCompiler___dump_context_info_t)CALL( self,COLOR_abstracttool___AbstractCompiler___dump_context_info))( self) /*AbstractCompiler::dump_context_info*/;
+  }
+  variable2 = ((array___AbstractArray___is_empty_t)CALL( variable1 /*to_do*/,COLOR_abstract_collection___Collection___is_empty))( variable1 /*to_do*/) /*Array::is_empty*/;
+  variable2 =  TAG_Bool(!UNTAG_Bool(variable2));
+  if (UNTAG_Bool(variable2)) { /* and */
+    variable2 = ((mmloader___ToolContext___opt_only_metamodel_t)CALL( self,COLOR_mmloader___ToolContext___opt_only_metamodel))( self) /*AbstractCompiler::opt_only_metamodel*/;
+    variable2 = ((opts___Option___value_t)CALL(variable2,COLOR_opts___Option___value))(variable2) /*OptionBool::value*/;
+    variable2 =  TAG_Bool(!UNTAG_Bool(variable2));
+  }
+  if (UNTAG_Bool(variable2)) { /*if*/
+    ((abstracttool___AbstractCompiler___perform_work_t)CALL( self,COLOR_abstracttool___AbstractCompiler___perform_work))( self,  variable1 /*to_do*/) /*AbstractCompiler::perform_work*/;
+  }
+  tracehead = trace.prev;
+  return;
+}
+void abstracttool___AbstractCompiler___perform_work(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstracttool::AbstractCompiler::perform_work (src/abstracttool.nit:63,2--39)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method perform_work called (src/abstracttool.nit:63,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return;
+}
+void abstracttool___AbstractCompiler___dump_context_info(val_t  self) {
+  struct trace_t trace = {NULL, "abstracttool::AbstractCompiler::dump_context_info (src/abstracttool.nit:65,2--80:9)"};
+  val_t variable0;
+    val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  val_t variable4;
+  val_t variable5;
+  val_t variable6;
+  val_t variable7;
+  val_t variable8;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstractmetamodel___MMContext___module_hierarchy_t)CALL( self,COLOR_abstractmetamodel___MMContext___module_hierarchy))( self) /*AbstractCompiler::module_hierarchy*/;
+  variable0 = ((partial_order___PartialOrder___iterator_t)CALL(variable0,COLOR_abstract_collection___Collection___iterator))(variable0) /*PartialOrder::iterator*/;
+  while (true) { /*for*/
+    variable1 = ((abstract_collection___Iterator___is_ok_t)CALL(variable0,COLOR_abstract_collection___Iterator___is_ok))(variable0) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable1)) break; /*for*/
+    variable1 = ((abstract_collection___Iterator___item_t)CALL(variable0,COLOR_abstract_collection___Iterator___item))(variable0) /*Iterator::item*/;
+    ((abstracttool___MMModule___dump_module_info_t)CALL( variable1 /*mod*/,COLOR_abstracttool___MMModule___dump_module_info))( variable1 /*mod*/) /*MMModule::dump_module_info*/;
+    continue_5: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable0,COLOR_abstract_collection___Iterator___next))(variable0) /*Iterator::next*/;
+  }
+  break_5: while(0);
+  variable1 = NEW_array___Array___init(); /*new Array[MMModule]*/
+  variable0 = variable1;
+  variable1 = ((abstractmetamodel___MMContext___module_hierarchy_t)CALL( self,COLOR_abstractmetamodel___MMContext___module_hierarchy))( self) /*AbstractCompiler::module_hierarchy*/;
+  ((abstract_collection___SimpleCollection___add_all_t)CALL( variable0 /*tab*/,COLOR_abstract_collection___SimpleCollection___add_all))( variable0 /*tab*/, variable1) /*Array::add_all*/;
+  variable2 = ((abstractmetamodel___MMContext___module_hierarchy_t)CALL( self,COLOR_abstractmetamodel___MMContext___module_hierarchy))( self) /*AbstractCompiler::module_hierarchy*/;
+  variable2 = ((partial_order___PartialOrder___select_smallests_t)CALL(variable2,COLOR_partial_order___PartialOrder___select_smallests))(variable2,  variable0 /*tab*/) /*PartialOrder::select_smallests*/;
+  variable3 = NEW_string___String___with_native(BOX_NativeString("-"), TAG_Int(1)); /*new String*/
+  variable2 = ((string___Collection___join_t)CALL(variable2,COLOR_string___Collection___join))(variable2, variable3) /*Array::join*/;
+  variable1 = variable2;
+  variable3 = NEW_string___String___init(); /*new String*/
+  variable4 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+  variable5 = variable4;
+  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable5) /*String::append*/;
+  variable6 =  variable1 /*name*/;
+  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable6) /*String::append*/;
+  variable7 = NEW_string___String___with_native(BOX_NativeString(".full_class_hierarchy.new.dot"), TAG_Int(29)); /*new String*/
+  variable8 = variable7;
+  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable8) /*String::append*/;
+  variable4 = NEW_file___OFStream___open(variable3); /*new OFStream*/
+  variable3 = variable4;
+  variable2 = variable3;
+  variable3 = ((abstractmetamodel___MMContext___class_hierarchy_t)CALL( self,COLOR_abstractmetamodel___MMContext___class_hierarchy))( self) /*AbstractCompiler::class_hierarchy*/;
+  variable3 = ((partial_order___PartialOrder___to_dot_t)CALL(variable3,COLOR_partial_order___PartialOrder___to_dot))(variable3) /*PartialOrder::to_dot*/;
+  ((file___OFStream___write_t)CALL( variable2 /*f*/,COLOR_stream___OStream___write))( variable2 /*f*/, variable3) /*OFStream::write*/;
+  ((file___OFStream___close_t)CALL( variable2 /*f*/,COLOR_stream___IOS___close))( variable2 /*f*/) /*OFStream::close*/;
+  variable3 = NEW_string___String___init(); /*new String*/
+  variable4 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+  variable5 = variable4;
+  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable5) /*String::append*/;
+  variable6 =  variable1 /*name*/;
+  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable6) /*String::append*/;
+  variable7 = NEW_string___String___with_native(BOX_NativeString(".module_hierarchy.new.dot"), TAG_Int(25)); /*new String*/
+  variable8 = variable7;
+  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable8) /*String::append*/;
+  variable4 = NEW_file___OFStream___open(variable3); /*new OFStream*/
+  variable3 = variable4;
+  variable2 = variable3 /*f=*/;
+  variable3 = ((abstractmetamodel___MMContext___module_hierarchy_t)CALL( self,COLOR_abstractmetamodel___MMContext___module_hierarchy))( self) /*AbstractCompiler::module_hierarchy*/;
+  variable3 = ((partial_order___PartialOrder___to_dot_t)CALL(variable3,COLOR_partial_order___PartialOrder___to_dot))(variable3) /*PartialOrder::to_dot*/;
+  ((file___OFStream___write_t)CALL( variable2 /*f*/,COLOR_stream___OStream___write))( variable2 /*f*/, variable3) /*OFStream::write*/;
+  ((file___OFStream___close_t)CALL( variable2 /*f*/,COLOR_stream___IOS___close))( variable2 /*f*/) /*OFStream::close*/;
+  tracehead = trace.prev;
+  return;
+}
+void abstracttool___MMModule___dump_module_info(val_t  self) {
+  struct trace_t trace = {NULL, "abstracttool::MMModule::dump_module_info (src/abstracttool.nit:85,2--98:9)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  val_t variable4;
+  val_t variable5;
+  val_t variable6;
+  val_t variable7;
+  val_t variable8;
+  val_t variable9;
+  val_t variable10;
+  val_t variable11;
+  trace.prev = tracehead; tracehead = &trace;
+  variable1 = ((mmloader___MMModule___filename_t)CALL( self,COLOR_mmloader___MMModule___filename))( self) /*MMModule::filename*/;
+  variable1 = ((file___String___file_path_t)CALL(variable1,COLOR_file___String___file_path))(variable1) /*String::file_path*/;
+  variable0 = variable1;
+  variable2 = NEW_string___String___init(); /*new String*/
+  variable3 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+  variable4 = variable3;
+  ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable4) /*String::append*/;
+  variable5 =  variable0 /*p*/;
+  ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable5) /*String::append*/;
+  variable6 = NEW_string___String___with_native(BOX_NativeString("/"), TAG_Int(1)); /*new String*/
+  variable7 = variable6;
+  ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable7) /*String::append*/;
+  variable8 = ((abstractmetamodel___MMModule___name_t)CALL( self,COLOR_abstractmetamodel___MMModule___name))( self) /*MMModule::name*/;
+  variable9 = variable8;
+  variable9 = ((string___String___to_s_t)CALL(variable9,COLOR_string___Object___to_s))(variable9) /*String::to_s*/;
+  ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable9) /*String::append*/;
+  variable10 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+  variable11 = variable10;
+  ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable11) /*String::append*/;
+  variable1 = variable2;
+  variable3 = NEW_string___String___init(); /*new String*/
+  variable4 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+  variable5 = variable4;
+  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable5) /*String::append*/;
+  variable6 =  variable1 /*fname*/;
+  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable6) /*String::append*/;
+  variable7 = NEW_string___String___with_native(BOX_NativeString(".class_hierarchy.new.dot"), TAG_Int(24)); /*new String*/
+  variable8 = variable7;
+  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable8) /*String::append*/;
+  variable4 = NEW_file___OFStream___open(variable3); /*new OFStream*/
+  variable3 = variable4;
+  variable2 = variable3;
+  variable3 = ((abstractmetamodel___MMModule___class_specialization_hierarchy_t)CALL( self,COLOR_abstractmetamodel___MMModule___class_specialization_hierarchy))( self) /*MMModule::class_specialization_hierarchy*/;
+  variable3 = ((partial_order___PartialOrder___to_dot_t)CALL(variable3,COLOR_partial_order___PartialOrder___to_dot))(variable3) /*PartialOrder::to_dot*/;
+  ((file___OFStream___write_t)CALL( variable2 /*f*/,COLOR_stream___OStream___write))( variable2 /*f*/, variable3) /*OFStream::write*/;
+  ((file___OFStream___close_t)CALL( variable2 /*f*/,COLOR_stream___IOS___close))( variable2 /*f*/) /*OFStream::close*/;
+  variable3 = NEW_string___String___init(); /*new String*/
+  variable4 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+  variable5 = variable4;
+  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable5) /*String::append*/;
+  variable6 =  variable1 /*fname*/;
+  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable6) /*String::append*/;
+  variable7 = NEW_string___String___with_native(BOX_NativeString(".properties.log"), TAG_Int(15)); /*new String*/
+  variable8 = variable7;
+  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable8) /*String::append*/;
+  variable4 = NEW_file___OFStream___open(variable3); /*new OFStream*/
+  variable3 = variable4;
+  variable2 = variable3 /*f=*/;
+  variable3 = ((abstractmetamodel___MMModule___local_classes_t)CALL( self,COLOR_abstractmetamodel___MMModule___local_classes))( self) /*MMModule::local_classes*/;
+  variable3 = ((array___AbstractArray___iterator_t)CALL(variable3,COLOR_abstract_collection___Collection___iterator))(variable3) /*Array::iterator*/;
+  while (true) { /*for*/
+    variable4 = ((array___ArrayIterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable4)) break; /*for*/
+    variable4 = ((array___ArrayIterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*ArrayIterator::item*/;
+    ((abstracttool___MMLocalClass___dump_properties_t)CALL( variable4 /*cla*/,COLOR_abstracttool___MMLocalClass___dump_properties))( variable4 /*cla*/,  variable2 /*f*/) /*MMLocalClass::dump_properties*/;
+    variable5 = NEW_string___String___with_native(BOX_NativeString("\n"), TAG_Int(1)); /*new String*/
+    ((file___OFStream___write_t)CALL( variable2 /*f*/,COLOR_stream___OStream___write))( variable2 /*f*/, variable5) /*OFStream::write*/;
+    continue_7: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
+  }
+  break_7: while(0);
+  ((file___OFStream___close_t)CALL( variable2 /*f*/,COLOR_stream___IOS___close))( variable2 /*f*/) /*OFStream::close*/;
+  tracehead = trace.prev;
+  return;
+}
+void abstracttool___MMLocalClass___dump_properties(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "abstracttool::MMLocalClass::dump_properties (src/abstracttool.nit:103,2--110:29)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  val_t variable4;
+  val_t variable5;
+  val_t variable6;
+    val_t variable7;
+    val_t variable8;
+    val_t variable9;
+    val_t variable10;
+    val_t variable11;
+    val_t variable12;
+    val_t variable13;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = NEW_string___String___init(); /*new String*/
+  variable2 = NEW_string___String___with_native(BOX_NativeString("class "), TAG_Int(6)); /*new String*/
+  variable3 = variable2;
+  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
+  variable4 =  self;
+  variable4 = ((string___String___to_s_t)CALL(variable4,COLOR_string___Object___to_s))(variable4) /*String::to_s*/;
+  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable4) /*String::append*/;
+  variable5 = NEW_string___String___with_native(BOX_NativeString("\n"), TAG_Int(1)); /*new String*/
+  variable6 = variable5;
+  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable6) /*String::append*/;
+  ((stream___OStream___write_t)CALL( variable0 /*file*/,COLOR_stream___OStream___write))( variable0 /*file*/, variable1) /*OStream::write*/;
+  variable1 = ((abstractmetamodel___MMLocalClass___global_properties_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___global_properties))( self) /*MMLocalClass::global_properties*/;
+  variable1 = ((abstract_collection___Collection___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Set::iterator*/;
+  while (true) { /*for*/
+    variable2 = ((abstract_collection___Iterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable2)) break; /*for*/
+    variable2 = ((abstract_collection___Iterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*Iterator::item*/;
+    variable4 = ((inheritance___MMLocalClass_____bra_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass_____bra))( self,  variable2 /*p*/) /*MMLocalClass::[]*/;
+    variable3 = variable4;
+    variable4 = NEW_string___String___init(); /*new String*/
+    variable5 = NEW_string___String___with_native(BOX_NativeString("\t"), TAG_Int(1)); /*new String*/
+    variable6 = variable5;
+    ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
+    variable7 =  variable3 /*lp*/;
+    variable7 = ((string___String___to_s_t)CALL(variable7,COLOR_string___Object___to_s))(variable7) /*String::to_s*/;
+    ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable7) /*String::append*/;
+    variable8 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
+    variable9 = variable8;
+    ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable9) /*String::append*/;
+    variable10 = ((genericity___MMLocalProperty___signature_t)CALL( variable3 /*lp*/,COLOR_static_type___MMLocalProperty___signature))( variable3 /*lp*/) /*MMLocalProperty::signature*/;
+    variable11 = variable10;
+    variable11 = ((string___String___to_s_t)CALL(variable11,COLOR_string___Object___to_s))(variable11) /*String::to_s*/;
+    ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable11) /*String::append*/;
+    variable12 = NEW_string___String___with_native(BOX_NativeString("\n"), TAG_Int(1)); /*new String*/
+    variable13 = variable12;
+    ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable13) /*String::append*/;
+    ((stream___OStream___write_t)CALL( variable0 /*file*/,COLOR_stream___OStream___write))( variable0 /*file*/, variable4) /*OStream::write*/;
+    continue_9: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*Iterator::next*/;
+  }
+  break_9: while(0);
+  variable1 = NEW_string___String___init(); /*new String*/
+  variable2 = NEW_string___String___with_native(BOX_NativeString("end # "), TAG_Int(6)); /*new String*/
+  variable3 = variable2;
+  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
+  variable4 =  self;
+  variable4 = ((string___String___to_s_t)CALL(variable4,COLOR_string___Object___to_s))(variable4) /*String::to_s*/;
+  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable4) /*String::append*/;
+  variable5 = NEW_string___String___with_native(BOX_NativeString("\n"), TAG_Int(1)); /*new String*/
+  variable6 = variable5;
+  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable6) /*String::append*/;
+  ((stream___OStream___write_t)CALL( variable0 /*file*/,COLOR_stream___OStream___write))( variable0 /*file*/, variable1) /*OStream::write*/;
+  tracehead = trace.prev;
+  return;
+}
diff --git a/c_src/abstracttool._sep.h b/c_src/abstracttool._sep.h
new file mode 100644 (file)
index 0000000..def3089
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef abstracttool__sep
+#define abstracttool__sep
+#include "syntax._sep.h"
+#include <nit_common.h>
+
+extern const classtable_elt_t VFT_AbstractCompiler[];
+extern const int SFT_abstracttool[];
+#define ID_AbstractCompiler SFT_abstracttool[0]
+#define COLOR_AbstractCompiler SFT_abstracttool[1]
+#define INIT_TABLE_POS_AbstractCompiler SFT_abstracttool[2]
+#define COLOR_abstracttool___AbstractCompiler___init SFT_abstracttool[3]
+#define COLOR_abstracttool___AbstractCompiler___exec_cmd_line SFT_abstracttool[4]
+#define COLOR_abstracttool___AbstractCompiler___perform_work SFT_abstracttool[5]
+#define COLOR_abstracttool___AbstractCompiler___dump_context_info SFT_abstracttool[6]
+#define COLOR_abstracttool___MMModule___dump_module_info SFT_abstracttool[7]
+#define COLOR_abstracttool___MMLocalClass___dump_properties SFT_abstracttool[8]
+typedef void (* abstracttool___AbstractCompiler___init_t)(val_t  self, int* init_table);
+void abstracttool___AbstractCompiler___init(val_t  self, int* init_table);
+val_t NEW_abstracttool___AbstractCompiler___init();
+typedef void (* abstracttool___AbstractCompiler___exec_cmd_line_t)(val_t  self);
+void abstracttool___AbstractCompiler___exec_cmd_line(val_t  self);
+typedef void (* abstracttool___AbstractCompiler___perform_work_t)(val_t  self, val_t  param0);
+void abstracttool___AbstractCompiler___perform_work(val_t  self, val_t  param0);
+typedef void (* abstracttool___AbstractCompiler___dump_context_info_t)(val_t  self);
+void abstracttool___AbstractCompiler___dump_context_info(val_t  self);
+typedef void (* abstracttool___MMModule___dump_module_info_t)(val_t  self);
+void abstracttool___MMModule___dump_module_info(val_t  self);
+typedef void (* abstracttool___MMLocalClass___dump_properties_t)(val_t  self, val_t  param0);
+void abstracttool___MMLocalClass___dump_properties(val_t  self, val_t  param0);
+#endif
diff --git a/c_src/array._sep.c b/c_src/array._sep.c
new file mode 100644 (file)
index 0000000..fd63e49
--- /dev/null
@@ -0,0 +1,1595 @@
+#include "array._sep.h"
+void array___AbstractArray___enlarge(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::enlarge (bin/../lib/standard//array.nit:23,2--22)"};
+  trace.prev = tracehead; tracehead = &trace;
+  fprintf(stderr, "Deferred method enlarge called (bin/../lib/standard//array.nit:23,2)\n");
+  nit_exit(1);
+  tracehead = trace.prev;
+  return;
+}
+val_t array___AbstractArray___length(val_t  self) {
+  struct trace_t trace = {NULL, "array::AbstractArray::length (bin/../lib/standard//array.nit:25,2--26:33)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
+}
+val_t array___AbstractArray___is_empty(val_t  self) {
+  struct trace_t trace = {NULL, "array::AbstractArray::is_empty (bin/../lib/standard//array.nit:28,2--43)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
+  variable0 = TAG_Bool((variable0)==( TAG_Int(0)));
+  goto return_label0;
+  return_label0: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void array___AbstractArray___push(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::push (bin/../lib/standard//array.nit:30,2--34)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  ((array___AbstractArray___add_t)CALL( self,COLOR_abstract_collection___SimpleCollection___add))( self,  variable0 /*item*/) /*AbstractArray::add*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t array___AbstractArray___pop(val_t  self) {
+  struct trace_t trace = {NULL, "array::AbstractArray::pop (bin/../lib/standard//array.nit:32,2--37:10)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((array___AbstractArray___is_empty_t)CALL( self,COLOR_abstract_collection___Collection___is_empty))( self) /*AbstractArray::is_empty*/;
+  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable0)))) { fprintf(stderr, "Assert 'not_empty'  failed: bin/../lib/standard//array.nit:34,3--32\n"); nit_exit(1);}
+  variable1 = ((abstract_collection___IndexedCollection___last_t)CALL( self,COLOR_abstract_collection___IndexedCollection___last))( self) /*AbstractArray::last*/;
+  variable0 = variable1;
+  ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ = TAG_Int(UNTAG_Int(ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/)-UNTAG_Int( TAG_Int(1)));
+  variable0 =  variable0 /*r*/;
+  goto return_label2;
+  return_label2: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t array___AbstractArray___shift(val_t  self) {
+  struct trace_t trace = {NULL, "array::AbstractArray::shift (bin/../lib/standard//array.nit:40,2--51:10)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+    val_t variable4;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((array___AbstractArray___is_empty_t)CALL( self,COLOR_abstract_collection___Collection___is_empty))( self) /*AbstractArray::is_empty*/;
+  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable0)))) { fprintf(stderr, "Assert 'not_empty'  failed: bin/../lib/standard//array.nit:42,3--32\n"); nit_exit(1);}
+  variable1 = ((abstract_collection___IndexedCollection___first_t)CALL( self,COLOR_abstract_collection___Collection___first))( self) /*AbstractArray::first*/;
+  variable0 = variable1;
+  variable1 =  TAG_Int(1);
+  variable3 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  variable2 = variable3;
+  while (true) { /*while*/
+    variable3 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int( variable2 /*l*/));
+    if (!UNTAG_Bool(variable3)) break; /* while*/
+    variable3 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable1 /*i*/) /*AbstractArray::[]*/;
+    ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable3, variable4) /*AbstractArray::[]=*/;
+    variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_4: while(0);
+  }
+  break_4: while(0);
+  variable3 = TAG_Int(UNTAG_Int( variable2 /*l*/)-UNTAG_Int( TAG_Int(1)));
+  ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ = variable3;
+  variable0 =  variable0 /*r*/;
+  goto return_label3;
+  return_label3: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void array___AbstractArray___unshift(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::unshift (bin/../lib/standard//array.nit:54,2--61:16)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( TAG_Int(1)));
+  variable1 = variable2;
+  while (true) { /*while*/
+    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable2)) break; /* while*/
+    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)+UNTAG_Int( TAG_Int(1)));
+    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable1 /*i*/) /*AbstractArray::[]*/;
+    ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable2, variable3) /*AbstractArray::[]=*/;
+    variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_6: while(0);
+  }
+  break_6: while(0);
+  ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self,  TAG_Int(0),  variable0 /*item*/) /*AbstractArray::[]=*/;
+  tracehead = trace.prev;
+  return;
+}
+void array___AbstractArray___insert(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "array::AbstractArray::insert (bin/../lib/standard//array.nit:64,2--68:18)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1)));
+  ((array___AbstractArray___enlarge_t)CALL( self,COLOR_array___AbstractArray___enlarge))( self, variable2) /*AbstractArray::enlarge*/;
+  variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( variable1 /*pos*/));
+  variable3 = TAG_Int(UNTAG_Int( variable1 /*pos*/)+UNTAG_Int( TAG_Int(1)));
+  ((array___AbstractArray___copy_to_t)CALL( self,COLOR_array___AbstractArray___copy_to))( self,  variable1 /*pos*/, variable2,  self, variable3) /*AbstractArray::copy_to*/;
+  ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self,  variable1 /*pos*/,  variable0 /*item*/) /*AbstractArray::[]=*/;
+  tracehead = trace.prev;
+  return;
+}
+void array___AbstractArray___add(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::add (bin/../lib/standard//array.nit:71,2--44)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable1,  variable0 /*item*/) /*AbstractArray::[]=*/;
+  tracehead = trace.prev;
+  return;
+}
+void array___AbstractArray___clear(val_t  self) {
+  struct trace_t trace = {NULL, "array::AbstractArray::clear (bin/../lib/standard//array.nit:73,2--32)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ =  TAG_Int(0);
+  tracehead = trace.prev;
+  return;
+}
+val_t array___AbstractArray___has(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::has (bin/../lib/standard//array.nit:75,2--83:14)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  TAG_Int(0);
+  variable3 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  variable2 = variable3;
+  while (true) { /*while*/
+    variable3 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int( variable2 /*l*/));
+    if (!UNTAG_Bool(variable3)) break; /* while*/
+    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable1 /*i*/) /*AbstractArray::[]*/;
+    variable3 = TAG_Bool((variable3 ==  variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3,  variable0 /*item*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable3)) { /*if*/
+      variable1 =  TAG_Bool(true);
+      goto return_label10;
+    }
+    variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_11: while(0);
+  }
+  break_11: while(0);
+  variable1 =  TAG_Bool(false);
+  goto return_label10;
+  return_label10: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t array___AbstractArray___has_only(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::has_only (bin/../lib/standard//array.nit:86,2--94:13)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  TAG_Int(0);
+  variable3 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  variable2 = variable3;
+  while (true) { /*while*/
+    variable3 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int( variable2 /*l*/));
+    if (!UNTAG_Bool(variable3)) break; /* while*/
+    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable1 /*i*/) /*AbstractArray::[]*/;
+    variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 ==  variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3,  variable0 /*item*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable3)) { /*if*/
+      variable1 =  TAG_Bool(false);
+      goto return_label12;
+    }
+    variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_13: while(0);
+  }
+  break_13: while(0);
+  variable1 =  TAG_Bool(true);
+  goto return_label12;
+  return_label12: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t array___AbstractArray___has_key(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::has_key (bin/../lib/standard//array.nit:97,2--66)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = TAG_Bool(UNTAG_Int( variable0 /*index*/)>=UNTAG_Int( TAG_Int(0)));
+  variable2 = variable1;
+  if (UNTAG_Bool(variable2)) { /* and */
+    variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+    variable2 = TAG_Bool(UNTAG_Int( variable0 /*index*/)<UNTAG_Int(variable2));
+  }
+  variable1 = variable2;
+  goto return_label14;
+  return_label14: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t array___AbstractArray___count(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::count (bin/../lib/standard//array.nit:99,2--108:12)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  val_t variable4;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  TAG_Int(0);
+  variable2 =  TAG_Int(0);
+  variable4 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  variable3 = variable4;
+  while (true) { /*while*/
+    variable4 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int( variable3 /*l*/));
+    if (!UNTAG_Bool(variable4)) break; /* while*/
+    variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*i*/) /*AbstractArray::[]*/;
+    variable4 = TAG_Bool((variable4 ==  variable0 /*item*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*item*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable4)) { /*if*/
+      variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*res*/;
+    }
+    variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_16: while(0);
+  }
+  break_16: while(0);
+  variable1 =  variable1 /*res*/;
+  goto return_label15;
+  return_label15: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t array___AbstractArray___index_of(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::index_of (bin/../lib/standard//array.nit:111,2--58)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((array___AbstractArray___index_of_from_t)CALL( self,COLOR_array___AbstractArray___index_of_from))( self,  variable0 /*item*/,  TAG_Int(0)) /*AbstractArray::index_of_from*/;
+  goto return_label17;
+  return_label17: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t array___AbstractArray___last_index_of(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::last_index_of (bin/../lib/standard//array.nit:113,2--77)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1)));
+  variable1 = ((array___AbstractArray___last_index_of_from_t)CALL( self,COLOR_array___AbstractArray___last_index_of_from))( self,  variable0 /*item*/, variable1) /*AbstractArray::last_index_of_from*/;
+  goto return_label18;
+  return_label18: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t array___AbstractArray___index_of_from(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "array::AbstractArray::index_of_from (bin/../lib/standard//array.nit:115,2--125:11)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  val_t variable4;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 =  variable1 /*pos*/;
+  variable4 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  variable3 = variable4;
+  while (true) { /*while*/
+    variable4 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int( variable3 /*len*/));
+    if (!UNTAG_Bool(variable4)) break; /* while*/
+    variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*i*/) /*AbstractArray::[]*/;
+    variable4 = TAG_Bool((variable4 ==  variable0 /*item*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*item*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable4)) { /*if*/
+      variable2 =  variable2 /*i*/;
+      goto return_label19;
+    }
+    variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_20: while(0);
+  }
+  break_20: while(0);
+  variable4 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
+  variable2 = variable4;
+  goto return_label19;
+  return_label19: while(false);
+  tracehead = trace.prev;
+  return variable2;
+}
+val_t array___AbstractArray___last_index_of_from(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "array::AbstractArray::last_index_of_from (bin/../lib/standard//array.nit:128,2--138:11)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 =  variable1 /*pos*/;
+  while (true) { /*while*/
+    variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable3)) break; /* while*/
+    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*i*/) /*AbstractArray::[]*/;
+    variable3 = TAG_Bool((variable3 ==  variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3,  variable0 /*item*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable3)) { /*if*/
+      variable2 =  variable2 /*i*/;
+      goto return_label21;
+    } else { /*if*/
+      variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( TAG_Int(1))) /*i*/;
+    }
+    continue_22: while(0);
+  }
+  break_22: while(0);
+  variable3 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
+  variable2 = variable3;
+  goto return_label21;
+  return_label21: while(false);
+  tracehead = trace.prev;
+  return variable2;
+}
+val_t array___AbstractArray___reversed(val_t  self) {
+  struct trace_t trace = {NULL, "array::AbstractArray::reversed (bin/../lib/standard//array.nit:141,2--149:15)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable1 = ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
+  variable0 = variable1;
+  variable2 = NEW_array___Array___with_capacity( variable0 /*cmp*/); /*new Array[E]*/
+  variable1 = variable2;
+  while (true) { /*while*/
+    variable2 = TAG_Bool(UNTAG_Int( variable0 /*cmp*/)>UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable2)) break; /* while*/
+    variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int( TAG_Int(1))) /*cmp*/;
+    variable2 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable0 /*cmp*/) /*AbstractArray::[]*/;
+    ((array___AbstractArray___add_t)CALL( variable1 /*result*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*result*/, variable2) /*Array::add*/;
+    continue_24: while(0);
+  }
+  break_24: while(0);
+  variable0 =  variable1 /*result*/;
+  goto return_label23;
+  return_label23: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void array___AbstractArray___remove(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::remove (bin/../lib/standard//array.nit:152,2--51)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((array___AbstractArray___index_of_t)CALL( self,COLOR_abstract_collection___IndexedCollection___index_of))( self,  variable0 /*item*/) /*AbstractArray::index_of*/;
+  ((array___AbstractArray___remove_at_t)CALL( self,COLOR_abstract_collection___Map___remove_at))( self, variable1) /*AbstractArray::remove_at*/;
+  tracehead = trace.prev;
+  return;
+}
+void array___AbstractArray___remove_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::remove_all (bin/../lib/standard//array.nit:154,2--159:28)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ((array___AbstractArray___index_of_t)CALL( self,COLOR_abstract_collection___IndexedCollection___index_of))( self,  variable0 /*item*/) /*AbstractArray::index_of*/;
+  variable1 = variable2;
+  while (true) { /*while*/
+    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable2)) break; /* while*/
+    ((array___AbstractArray___remove_at_t)CALL( self,COLOR_abstract_collection___Map___remove_at))( self,  variable1 /*i*/) /*AbstractArray::remove_at*/;
+    variable2 = ((array___AbstractArray___index_of_from_t)CALL( self,COLOR_array___AbstractArray___index_of_from))( self,  variable0 /*item*/,  variable1 /*i*/) /*AbstractArray::index_of_from*/;
+    variable1 = variable2 /*i=*/;
+    continue_27: while(0);
+  }
+  break_27: while(0);
+  tracehead = trace.prev;
+  return;
+}
+void array___AbstractArray___remove_at(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::remove_at (bin/../lib/standard//array.nit:163,2--172:18)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+      val_t variable4;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  variable1 = variable2;
+  variable2 = TAG_Bool(UNTAG_Int( variable0 /*i*/)>=UNTAG_Int( TAG_Int(0)));
+  variable3 = variable2;
+  if (UNTAG_Bool(variable3)) { /* and */
+    variable3 = TAG_Bool(UNTAG_Int( variable0 /*i*/)<UNTAG_Int( variable1 /*l*/));
+  }
+  variable2 = variable3;
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable3 = TAG_Int(UNTAG_Int( variable0 /*i*/)+UNTAG_Int( TAG_Int(1)));
+    variable2 = variable3;
+    while (true) { /*while*/
+      variable3 = TAG_Bool(UNTAG_Int( variable2 /*j*/)<UNTAG_Int( variable1 /*l*/));
+      if (!UNTAG_Bool(variable3)) break; /* while*/
+      variable3 = TAG_Int(UNTAG_Int( variable2 /*j*/)-UNTAG_Int( TAG_Int(1)));
+      variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*j*/) /*AbstractArray::[]*/;
+      ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable3, variable4) /*AbstractArray::[]=*/;
+      variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*j*/;
+      continue_29: while(0);
+    }
+    break_29: while(0);
+    variable3 = TAG_Int(UNTAG_Int( variable1 /*l*/)-UNTAG_Int( TAG_Int(1)));
+    ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ = variable3;
+  }
+  tracehead = trace.prev;
+  return;
+}
+void array___AbstractArray___copy_to(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3) {
+  struct trace_t trace = {NULL, "array::AbstractArray::copy_to (bin/../lib/standard//array.nit:176,2--182:35)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  val_t variable4;
+    val_t variable5;
+    val_t variable6;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 =  param2;
+  variable3 =  param3;
+  variable4 =  variable1 /*len*/;
+  while (true) { /*while*/
+    variable5 = TAG_Bool(UNTAG_Int( variable4 /*i*/)>UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable5)) break; /* while*/
+    variable4 = TAG_Int(UNTAG_Int(variable4)-UNTAG_Int( TAG_Int(1))) /*i*/;
+    variable5 = TAG_Int(UNTAG_Int( variable3 /*new_start*/)+UNTAG_Int( variable4 /*i*/));
+    variable6 = TAG_Int(UNTAG_Int( variable0 /*start*/)+UNTAG_Int( variable4 /*i*/));
+    variable6 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable6) /*AbstractArray::[]*/;
+    ((abstract_collection___Map_____braeq_t)CALL( variable2 /*dest*/,COLOR_abstract_collection___Map_____braeq))( variable2 /*dest*/, variable5, variable6) /*AbstractArray::[]=*/;
+    continue_31: while(0);
+  }
+  break_31: while(0);
+  tracehead = trace.prev;
+  return;
+}
+void array___AbstractArray___output(val_t  self) {
+  struct trace_t trace = {NULL, "array::AbstractArray::output (bin/../lib/standard//array.nit:186,2--193:9)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  TAG_Int(0);
+  variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  variable1 = variable2;
+  while (true) { /*while*/
+    variable2 = TAG_Bool(UNTAG_Int( variable0 /*i*/)<UNTAG_Int( variable1 /*l*/));
+    if (!UNTAG_Bool(variable2)) break; /* while*/
+    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable0 /*i*/) /*AbstractArray::[]*/;
+    variable2 = variable3;
+    variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*e*/ ==  NIT_NULL /*null*/) || (( variable2 /*e*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*e*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*e*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*e*/,COLOR_kernel___Object_____eqeq))( variable2 /*e*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable3)) { /*if*/
+      ((kernel___Object___output_t)CALL( variable2 /*e*/,COLOR_kernel___Object___output))( variable2 /*e*/) /*Object::output*/;
+    }
+    variable0 = TAG_Int(UNTAG_Int(variable0)+UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_33: while(0);
+  }
+  break_33: while(0);
+  tracehead = trace.prev;
+  return;
+}
+val_t array___AbstractArray___iterator(val_t  self) {
+  struct trace_t trace = {NULL, "array::AbstractArray::iterator (bin/../lib/standard//array.nit:197,2--74)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = NEW_array___ArrayIterator___init( self); /*new ArrayIterator[E]*/
+  goto return_label34;
+  return_label34: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t array___AbstractArray_____eqeq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::AbstractArray::== (bin/../lib/standard//array.nit:199,2--211:13)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+    val_t variable4;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = TAG_Bool(( variable0 /*o*/==NIT_NULL) || VAL_ISA( variable0 /*o*/, COLOR_AbstractArray, ID_AbstractArray)) /*cast AbstractArray[E]*/;
+  variable1 =  TAG_Bool(!UNTAG_Bool(variable1));
+  if (!UNTAG_Bool(variable1)) { /* or */
+    variable1 = TAG_Bool(IS_EQUAL_NN( variable0 /*o*/, NIT_NULL /*null*/));
+  }
+  if (UNTAG_Bool(variable1)) { /*if*/
+    variable1 =  TAG_Bool(false);
+    goto return_label35;
+  }
+  variable1 = TAG_Bool(( variable0 /*o*/==NIT_NULL) || VAL_ISA( variable0 /*o*/, COLOR_AbstractArray, ID_AbstractArray)) /*cast AbstractArray[E]*/;
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: bin/../lib/standard//array.nit:203,3--30\n"); nit_exit(1);}
+  variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
+  variable1 = variable2;
+  variable2 = ((array___AbstractArray___length_t)CALL( variable0 /*o*/,COLOR_abstract_collection___Collection___length))( variable0 /*o*/) /*AbstractArray::length*/;
+  variable2 = TAG_Bool((variable2)!=( variable1 /*l*/));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable1 =  TAG_Bool(false);
+    goto return_label35;
+  }
+  variable2 =  TAG_Int(0);
+  while (true) { /*while*/
+    variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int( variable1 /*l*/));
+    if (!UNTAG_Bool(variable3)) break; /* while*/
+    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*i*/) /*AbstractArray::[]*/;
+    variable4 = ((abstract_collection___Map_____bra_t)CALL( variable0 /*o*/,COLOR_abstract_collection___Map_____bra))( variable0 /*o*/,  variable2 /*i*/) /*AbstractArray::[]*/;
+    variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 == variable4) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3,variable4)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, variable4) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable3)) { /*if*/
+      variable1 =  TAG_Bool(false);
+      goto return_label35;
+    }
+    variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_36: while(0);
+  }
+  break_36: while(0);
+  variable1 =  TAG_Bool(true);
+  goto return_label35;
+  return_label35: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t array___Array_____bra(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::Array::[] (bin/../lib/standard//array.nit:227,2--230:21)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = TAG_Bool(UNTAG_Int( variable0 /*index*/)>=UNTAG_Int( TAG_Int(0)));
+  variable2 = variable1;
+  if (UNTAG_Bool(variable2)) { /* and */
+    variable2 = ATTR_array___AbstractArray____length( self) /*Array::_length*/;
+    variable2 = TAG_Bool(UNTAG_Int( variable0 /*index*/)<UNTAG_Int(variable2));
+  }
+  variable1 = variable2;
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert 'index'  failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
+  variable1 = ATTR_array___Array____items( self) /*Array::_items*/;
+  variable1 = UNBOX_NativeArray(variable1)[UNTAG_Int( variable0 /*index*/)];
+  goto return_label37;
+  return_label37: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+void array___Array_____braeq(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "array::Array::[]= (bin/../lib/standard//array.nit:233,2--242:22)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable2 = TAG_Bool(UNTAG_Int( variable0 /*index*/)>=UNTAG_Int( TAG_Int(0)));
+  variable3 = variable2;
+  if (UNTAG_Bool(variable3)) { /* and */
+    variable3 = ATTR_array___AbstractArray____length( self) /*Array::_length*/;
+    variable3 = TAG_Int(UNTAG_Int(variable3)+UNTAG_Int( TAG_Int(1)));
+    variable3 = TAG_Bool(UNTAG_Int( variable0 /*index*/)<UNTAG_Int(variable3));
+  }
+  variable2 = variable3;
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert 'index'  failed: bin/../lib/standard//array.nit:235,3--50\n"); nit_exit(1);}
+  variable2 = ATTR_array___Array____capacity( self) /*Array::_capacity*/;
+  variable2 = TAG_Bool(UNTAG_Int(variable2)<=UNTAG_Int( variable0 /*index*/));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable2 = TAG_Int(UNTAG_Int( variable0 /*index*/)+UNTAG_Int( TAG_Int(1)));
+    ((array___Array___enlarge_t)CALL( self,COLOR_array___AbstractArray___enlarge))( self, variable2) /*Array::enlarge*/;
+  }
+  variable2 = ATTR_array___AbstractArray____length( self) /*Array::_length*/;
+  variable2 = TAG_Bool(UNTAG_Int(variable2)<=UNTAG_Int( variable0 /*index*/));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable2 = TAG_Int(UNTAG_Int( variable0 /*index*/)+UNTAG_Int( TAG_Int(1)));
+    ATTR_array___AbstractArray____length( self) /*Array::_length*/ = variable2;
+  }
+  variable2 = ATTR_array___Array____items( self) /*Array::_items*/;
+  UNBOX_NativeArray(variable2)[UNTAG_Int( variable0 /*index*/)]= variable1 /*item*/;
+  tracehead = trace.prev;
+  return;
+}
+void array___Array___enlarge(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::Array::enlarge (bin/../lib/standard//array.nit:245,2--253:15)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+    val_t variable4;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ATTR_array___Array____capacity( self) /*Array::_capacity*/;
+  variable1 = variable2;
+  variable2 = TAG_Bool(UNTAG_Int( variable0 /*cap*/)<=UNTAG_Int( variable1 /*c*/));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    goto return_label39;
+  }
+  while (true) { /*while*/
+    variable2 = TAG_Bool(UNTAG_Int( variable1 /*c*/)<=UNTAG_Int( variable0 /*cap*/));
+    if (!UNTAG_Bool(variable2)) break; /* while*/
+    variable2 = TAG_Int(UNTAG_Int( variable1 /*c*/)*UNTAG_Int( TAG_Int(2)));
+    variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(2)));
+    variable1 = variable2 /*c=*/;
+    continue_40: while(0);
+  }
+  break_40: while(0);
+  variable3 = BOX_NativeArray((val_t*)malloc((UNTAG_Int( variable1 /*c*/) * sizeof(val_t))));
+  variable2 = variable3;
+  variable3 = ATTR_array___Array____capacity( self) /*Array::_capacity*/;
+  variable3 = TAG_Bool(UNTAG_Int(variable3)>UNTAG_Int( TAG_Int(0)));
+  if (UNTAG_Bool(variable3)) { /*if*/
+    variable3 = ATTR_array___Array____items( self) /*Array::_items*/;
+    variable4 = ATTR_array___AbstractArray____length( self) /*Array::_length*/;
+    (void)memcpy(UNBOX_NativeArray( variable2 /*a*/), UNBOX_NativeArray(variable3), UNTAG_Int(variable4)*sizeof(val_t));
+  }
+  ATTR_array___Array____items( self) /*Array::_items*/ =  variable2 /*a*/;
+  ATTR_array___Array____capacity( self) /*Array::_capacity*/ =  variable1 /*c*/;
+  return_label39: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void array___Array___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, "array::Array::init (bin/../lib/standard//array.nit:256,2--260:13)"};
+  trace.prev = tracehead; tracehead = &trace;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
+  ATTR_array___Array____capacity( self) /*Array::_capacity*/ =  TAG_Int(0);
+  ATTR_array___AbstractArray____length( self) /*Array::_length*/ =  TAG_Int(0);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void array___Array___with(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, "array::Array::with (bin/../lib/standard//array.nit:263,2--268:26)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  /* check if p<Array[E] with p:E */
+  if (( param0!=NIT_NULL) && !VAL_ISA( param0, COLOR_Array, ID_Array)) { fprintf(stderr, "Cast failled at bin/../lib/standard//array.nit:264,12--24\n"); nit_exit(1); } /*cast Array[E]*/;
+  variable0 =  param0;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
+  variable1 = ATTR_array___Array____items( variable0 /*objects*/) /*Array::_items*/;
+  ATTR_array___Array____items( self) /*Array::_items*/ = variable1;
+  variable1 = ATTR_array___Array____capacity( variable0 /*objects*/) /*Array::_capacity*/;
+  ATTR_array___Array____capacity( self) /*Array::_capacity*/ = variable1;
+  variable1 = ((array___AbstractArray___length_t)CALL( variable0 /*objects*/,COLOR_abstract_collection___Collection___length))( variable0 /*objects*/) /*Array::length*/;
+  ATTR_array___AbstractArray____length( self) /*Array::_length*/ = variable1;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void array___Array___with_capacity(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, "array::Array::with_capacity (bin/../lib/standard//array.nit:271,2--277:13)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
+  variable1 = TAG_Bool(UNTAG_Int( variable0 /*cap*/)>=UNTAG_Int( TAG_Int(0)));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert 'positive'  failed: bin/../lib/standard//array.nit:274,3--27\n"); nit_exit(1);}
+  variable1 = BOX_NativeArray((val_t*)malloc((UNTAG_Int( variable0 /*cap*/) * sizeof(val_t))));
+  ATTR_array___Array____items( self) /*Array::_items*/ = variable1;
+  ATTR_array___Array____capacity( self) /*Array::_capacity*/ =  variable0 /*cap*/;
+  ATTR_array___AbstractArray____length( self) /*Array::_length*/ =  TAG_Int(0);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void array___Array___filled_with(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, "array::Array::filled_with (bin/../lib/standard//array.nit:280,2--290:9)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
+  variable2 = TAG_Bool(UNTAG_Int( variable1 /*count*/)>=UNTAG_Int( TAG_Int(0)));
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert 'positive'  failed: bin/../lib/standard//array.nit:283,3--29\n"); nit_exit(1);}
+  variable2 = BOX_NativeArray((val_t*)malloc((UNTAG_Int( variable1 /*count*/) * sizeof(val_t))));
+  ATTR_array___Array____items( self) /*Array::_items*/ = variable2;
+  ATTR_array___Array____capacity( self) /*Array::_capacity*/ =  variable1 /*count*/;
+  ATTR_array___AbstractArray____length( self) /*Array::_length*/ =  variable1 /*count*/;
+  variable2 =  TAG_Int(0);
+  while (true) { /*while*/
+    variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int( variable1 /*count*/));
+    if (!UNTAG_Bool(variable3)) break; /* while*/
+    ((array___Array_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self,  variable2 /*i*/,  variable0 /*value*/) /*Array::[]=*/;
+    variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_45: while(0);
+  }
+  break_45: while(0);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void array___Array___with_native(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, "array::Array::with_native (bin/../lib/standard//array.nit:294,2--300:16)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
+  variable2 = TAG_Bool(UNTAG_Int( variable1 /*size*/)>=UNTAG_Int( TAG_Int(0)));
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert 'positive'  failed: bin/../lib/standard//array.nit:297,3--28\n"); nit_exit(1);}
+  ATTR_array___Array____items( self) /*Array::_items*/ =  variable0 /*nat*/;
+  ATTR_array___Array____capacity( self) /*Array::_capacity*/ =  variable1 /*size*/;
+  ATTR_array___AbstractArray____length( self) /*Array::_length*/ =  variable1 /*size*/;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t array___ArrayIterator___item(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArrayIterator::item (bin/../lib/standard//array.nit:313,2--40)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArrayIterator____array( self) /*ArrayIterator::_array*/;
+  variable1 = ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/;
+  variable0 = ((abstract_collection___Map_____bra_t)CALL(variable0,COLOR_abstract_collection___Map_____bra))(variable0, variable1) /*AbstractArray::[]*/;
+  goto return_label47;
+  return_label47: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void array___ArrayIterator___item__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayIterator::item= (bin/../lib/standard//array.nit:315,2--42)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_array___ArrayIterator____array( self) /*ArrayIterator::_array*/;
+  variable2 = ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/;
+  ((abstract_collection___Map_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1, variable2,  variable0 /*e*/) /*AbstractArray::[]=*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t array___ArrayIterator___is_ok(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArrayIterator::is_ok (bin/../lib/standard//array.nit:317,2--50)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/;
+  variable1 = ATTR_array___ArrayIterator____array( self) /*ArrayIterator::_array*/;
+  variable1 = ((array___AbstractArray___length_t)CALL(variable1,COLOR_abstract_collection___Collection___length))(variable1) /*AbstractArray::length*/;
+  variable0 = TAG_Bool(UNTAG_Int(variable0)<UNTAG_Int(variable1));
+  goto return_label49;
+  return_label49: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void array___ArrayIterator___next(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArrayIterator::next (bin/../lib/standard//array.nit:319,2--31)"};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/ = TAG_Int(UNTAG_Int(ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/)+UNTAG_Int( TAG_Int(1)));
+  tracehead = trace.prev;
+  return;
+}
+void array___ArrayIterator___init(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, "array::ArrayIterator::init (bin/../lib/standard//array.nit:321,2--325:12)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArrayIterator].i]) return;
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*a*/ ==  NIT_NULL /*null*/) || (( variable0 /*a*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable0 /*a*/,COLOR_kernel___Object_____eqeq))( variable0 /*a*/,  NIT_NULL /*null*/) /*AbstractArray::==*/)))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert 'not_nil'  failed: bin/../lib/standard//array.nit:323,3--27\n"); nit_exit(1);}
+  ATTR_array___ArrayIterator____array( self) /*ArrayIterator::_array*/ =  variable0 /*a*/;
+  ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/ =  TAG_Int(0);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArrayIterator].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t array___ArrayIterator___index(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArrayIterator::index (bin/../lib/standard//array.nit:328,2--32)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/;
+}
+val_t array___ArraySet___has(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArraySet::has (bin/../lib/standard//array.nit:340,2--41)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  variable1 = ((array___AbstractArray___has_t)CALL(variable1,COLOR_abstract_collection___Collection___has))(variable1,  variable0 /*e*/) /*Array::has*/;
+  goto return_label52;
+  return_label52: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+void array___ArraySet___add(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArraySet::add (bin/../lib/standard//array.nit:342,2--60)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  variable1 = ((array___AbstractArray___has_t)CALL(variable1,COLOR_abstract_collection___Collection___has))(variable1,  variable0 /*e*/) /*Array::has*/;
+  if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable1)))) { /*if*/
+    variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+    ((array___AbstractArray___add_t)CALL(variable1,COLOR_abstract_collection___SimpleCollection___add))(variable1,  variable0 /*e*/) /*Array::add*/;
+  }
+  tracehead = trace.prev;
+  return;
+}
+val_t array___ArraySet___is_empty(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArraySet::is_empty (bin/../lib/standard//array.nit:344,2--46)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  variable0 = ((array___AbstractArray___is_empty_t)CALL(variable0,COLOR_abstract_collection___Collection___is_empty))(variable0) /*Array::is_empty*/;
+  goto return_label54;
+  return_label54: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t array___ArraySet___length(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArraySet::length (bin/../lib/standard//array.nit:346,2--42)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*Array::length*/;
+  goto return_label55;
+  return_label55: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t array___ArraySet___first(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArraySet::first (bin/../lib/standard//array.nit:348,2--351:21)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*Array::length*/;
+  variable0 = TAG_Bool(UNTAG_Int(variable0)>UNTAG_Int( TAG_Int(0)));
+  if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert failed: bin/../lib/standard//array.nit:350,3--26\n"); nit_exit(1);}
+  variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  variable0 = ((abstract_collection___IndexedCollection___first_t)CALL(variable0,COLOR_abstract_collection___Collection___first))(variable0) /*Array::first*/;
+  goto return_label56;
+  return_label56: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void array___ArraySet___remove(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArraySet::remove (bin/../lib/standard//array.nit:354,2--357:28)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  variable2 = ((array___AbstractArray___index_of_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___index_of))(variable2,  variable0 /*item*/) /*Array::index_of*/;
+  variable1 = variable2;
+  variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    ((array___ArraySet___remove_at_t)CALL( self,COLOR_array___ArraySet___remove_at))( self,  variable1 /*i*/) /*ArraySet::remove_at*/;
+  }
+  tracehead = trace.prev;
+  return;
+}
+void array___ArraySet___remove_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArraySet::remove_all (bin/../lib/standard//array.nit:360,2--43)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  ((array___ArraySet___remove_t)CALL( self,COLOR_abstract_collection___RemovableCollection___remove))( self,  variable0 /*item*/) /*ArraySet::remove*/;
+  tracehead = trace.prev;
+  return;
+}
+void array___ArraySet___clear(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArraySet::clear (bin/../lib/standard//array.nit:362,2--33)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  ((array___AbstractArray___clear_t)CALL(variable0,COLOR_abstract_collection___RemovableCollection___clear))(variable0) /*Array::clear*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t array___ArraySet___iterator(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArraySet::iterator (bin/../lib/standard//array.nit:364,2--70)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  variable0 = ((array___AbstractArray___iterator_t)CALL(variable0,COLOR_abstract_collection___Collection___iterator))(variable0) /*Array::iterator*/;
+  variable1 = NEW_array___ArraySetIterator___init(variable0); /*new ArraySetIterator[E]*/
+  variable0 = variable1;
+  goto return_label60;
+  return_label60: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void array___ArraySet___enlarge(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArraySet::enlarge (bin/../lib/standard//array.nit:366,2--367:45)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  ((array___Array___enlarge_t)CALL(variable1,COLOR_array___AbstractArray___enlarge))(variable1,  variable0 /*cap*/) /*Array::enlarge*/;
+  tracehead = trace.prev;
+  return;
+}
+void array___ArraySet___remove_at(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArraySet::remove_at (bin/../lib/standard//array.nit:369,2--372:12)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  variable2 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  variable2 = ((abstract_collection___IndexedCollection___last_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___last))(variable2) /*Array::last*/;
+  ((array___Array_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1,  variable0 /*i*/, variable2) /*Array::[]=*/;
+  variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
+  ((array___AbstractArray___pop_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___pop))(variable1) /*Array::pop*/;
+  tracehead = trace.prev;
+  return;
+}
+void array___ArraySet___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, "array::ArraySet::init (bin/../lib/standard//array.nit:375,2--376:29)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySet].i]) return;
+  variable0 = NEW_array___Array___init(); /*new Array[E]*/
+  ATTR_array___ArraySet____array( self) /*ArraySet::_array*/ = variable0;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySet].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void array___ArraySet___with_capacity(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, "array::ArraySet::with_capacity (bin/../lib/standard//array.nit:378,2--379:68)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySet].i]) return;
+  variable1 = NEW_array___Array___with_capacity( variable0 /*i*/); /*new Array[E]*/
+  ATTR_array___ArraySet____array( self) /*ArraySet::_array*/ = variable1;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySet].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t array___ArraySetIterator___is_ok(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArraySetIterator::is_ok (bin/../lib/standard//array.nit:386,2--39)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArraySetIterator____iter( self) /*ArraySetIterator::_iter*/;
+  variable0 = ((array___ArrayIterator___is_ok_t)CALL(variable0,COLOR_abstract_collection___Iterator___is_ok))(variable0) /*ArrayIterator::is_ok*/;
+  goto return_label65;
+  return_label65: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void array___ArraySetIterator___next(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArraySetIterator::next (bin/../lib/standard//array.nit:388,2--30)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArraySetIterator____iter( self) /*ArraySetIterator::_iter*/;
+  ((array___ArrayIterator___next_t)CALL(variable0,COLOR_abstract_collection___Iterator___next))(variable0) /*ArrayIterator::next*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t array___ArraySetIterator___item(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArraySetIterator::item (bin/../lib/standard//array.nit:390,2--40)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArraySetIterator____iter( self) /*ArraySetIterator::_iter*/;
+  variable0 = ((array___ArrayIterator___item_t)CALL(variable0,COLOR_abstract_collection___Iterator___item))(variable0) /*ArrayIterator::item*/;
+  goto return_label67;
+  return_label67: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void array___ArraySetIterator___init(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, "array::ArraySetIterator::init (bin/../lib/standard//array.nit:392,2--45)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySetIterator].i]) return;
+  ATTR_array___ArraySetIterator____iter( self) /*ArraySetIterator::_iter*/ =  variable0 /*iter*/;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySetIterator].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t array___ArrayMap_____bra(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayMap::[] (bin/../lib/standard//array.nit:402,2--409:14)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+    val_t variable4;
+    val_t variable5;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ((array___ArrayMap___index_t)CALL( self,COLOR_array___ArrayMap___index))( self,  variable0 /*key*/) /*ArrayMap::index*/;
+  variable1 = variable2;
+  variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+    variable3 =  variable1 /*i*/;
+    variable4 = TAG_Bool(UNTAG_Int( variable3 /*index*/)>=UNTAG_Int( TAG_Int(0)));
+    variable5 = variable4;
+    if (UNTAG_Bool(variable5)) { /* and */
+      variable5 = variable2;
+      variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
+      variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
+    }
+    variable4 = variable5;
+    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert 'index'  failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
+    variable4 = variable2;
+    variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
+    variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
+    goto return_label70;
+    return_label70: while(false);
+    variable2 = variable4;
+    variable2 = ((abstract_collection___Couple___second_t)CALL(variable2,COLOR_abstract_collection___Couple___second))(variable2) /*Couple::second*/;
+    variable1 = variable2;
+    goto return_label69;
+  } else { /*if*/
+    variable1 =  NIT_NULL /*null*/;
+    goto return_label69;
+  }
+  return_label69: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+void array___ArrayMap_____braeq(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "array::ArrayMap::[]= (bin/../lib/standard//array.nit:413,2--420:40)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+    val_t variable4;
+    val_t variable5;
+    val_t variable6;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  param1;
+  variable3 = ((array___ArrayMap___index_t)CALL( self,COLOR_array___ArrayMap___index))( self,  variable0 /*key*/) /*ArrayMap::index*/;
+  variable2 = variable3;
+  variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)>=UNTAG_Int( TAG_Int(0)));
+  if (UNTAG_Bool(variable3)) { /*if*/
+    variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+    variable4 =  variable2 /*i*/;
+    variable5 = TAG_Bool(UNTAG_Int( variable4 /*index*/)>=UNTAG_Int( TAG_Int(0)));
+    variable6 = variable5;
+    if (UNTAG_Bool(variable6)) { /* and */
+      variable6 = variable3;
+      variable6 = ATTR_array___AbstractArray____length(variable6) /*Array::_length*/;
+      variable6 = TAG_Bool(UNTAG_Int( variable4 /*index*/)<UNTAG_Int(variable6));
+    }
+    variable5 = variable6;
+    if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert 'index'  failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
+    variable5 = variable3;
+    variable5 = ATTR_array___Array____items(variable5) /*Array::_items*/;
+    variable5 = UNBOX_NativeArray(variable5)[UNTAG_Int( variable4 /*index*/)];
+    goto return_label72;
+    return_label72: while(false);
+    variable3 = variable5;
+    ((abstract_collection___Couple___second__eq_t)CALL(variable3,COLOR_abstract_collection___Couple___second__eq))(variable3,  variable1 /*item*/) /*Couple::second=*/;
+  } else { /*if*/
+    variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+    variable4 = NEW_abstract_collection___Couple___init( variable0 /*key*/,  variable1 /*item*/); /*new Couple[K, E]*/
+    ((array___AbstractArray___push_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___push))(variable3, variable4) /*Array::push*/;
+  }
+  tracehead = trace.prev;
+  return;
+}
+val_t array___ArrayMap___has_key(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayMap::has_key (bin/../lib/standard//array.nit:424,2--425:50)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ((array___ArrayMap___index_t)CALL( self,COLOR_array___ArrayMap___index))( self,  variable0 /*key*/) /*ArrayMap::index*/;
+  variable1 = TAG_Bool(UNTAG_Int(variable1)>=UNTAG_Int( TAG_Int(0)));
+  goto return_label73;
+  return_label73: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t array___ArrayMap___has(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayMap::has (bin/../lib/standard//array.nit:427,2--431:14)"};
+  val_t variable0;
+  val_t variable1;
+    val_t variable2;
+    val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
+  while (true) { /*for*/
+    variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable2)) break; /*for*/
+    variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
+    variable3 = ((abstract_collection___Couple___second_t)CALL( variable2 /*i*/,COLOR_abstract_collection___Couple___second))( variable2 /*i*/) /*Couple::second*/;
+    variable3 = TAG_Bool((variable3 ==  variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3,  variable0 /*item*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable3)) { /*if*/
+      variable1 =  TAG_Bool(true);
+      goto return_label74;
+    }
+    continue_75: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
+  }
+  break_75: while(0);
+  variable1 =  TAG_Bool(false);
+  goto return_label74;
+  return_label74: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t array___ArrayMap___has_only(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayMap::has_only (bin/../lib/standard//array.nit:434,2--438:13)"};
+  val_t variable0;
+  val_t variable1;
+    val_t variable2;
+    val_t variable3;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
+  while (true) { /*for*/
+    variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable2)) break; /*for*/
+    variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
+    variable3 = ((abstract_collection___Couple___second_t)CALL( variable2 /*i*/,COLOR_abstract_collection___Couple___second))( variable2 /*i*/) /*Couple::second*/;
+    variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 ==  variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3,  variable0 /*item*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable3)) { /*if*/
+      variable1 =  TAG_Bool(false);
+      goto return_label76;
+    }
+    continue_77: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
+  }
+  break_77: while(0);
+  variable1 =  TAG_Bool(true);
+  goto return_label76;
+  return_label76: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t array___ArrayMap___length(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArrayMap::length (bin/../lib/standard//array.nit:441,2--442:42)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*Array::length*/;
+  goto return_label78;
+  return_label78: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t array___ArrayMap___first(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArrayMap::first (bin/../lib/standard//array.nit:444,2--46)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  variable0 = ((abstract_collection___IndexedCollection___first_t)CALL(variable0,COLOR_abstract_collection___Collection___first))(variable0) /*Array::first*/;
+  variable0 = ((abstract_collection___Couple___first_t)CALL(variable0,COLOR_abstract_collection___Couple___first))(variable0) /*Couple::first*/;
+  goto return_label79;
+  return_label79: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t array___ArrayMap___count(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayMap::count (bin/../lib/standard//array.nit:446,2--451:11)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+    val_t variable4;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 =  TAG_Int(0);
+  variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  variable2 = ((array___AbstractArray___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Array::iterator*/;
+  while (true) { /*for*/
+    variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable3)) break; /*for*/
+    variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
+    variable4 = ((abstract_collection___Couple___second_t)CALL( variable3 /*i*/,COLOR_abstract_collection___Couple___second))( variable3 /*i*/) /*Couple::second*/;
+    variable4 = TAG_Bool((variable4 ==  variable0 /*item*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*item*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable4)) { /*if*/
+      variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*nb*/;
+    }
+    continue_81: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
+  }
+  break_81: while(0);
+  variable1 =  variable1 /*nb*/;
+  goto return_label80;
+  return_label80: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+val_t array___ArrayMap___iterator(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArrayMap::iterator (bin/../lib/standard//array.nit:454,2--99)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  variable0 = ((array___AbstractArray___iterator_t)CALL(variable0,COLOR_abstract_collection___Collection___iterator))(variable0) /*Array::iterator*/;
+  variable1 = NEW_abstract_collection___CoupleMapIterator___init(variable0); /*new CoupleMapIterator[K, E]*/
+  variable0 = variable1;
+  goto return_label82;
+  return_label82: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t array___ArrayMap___is_empty(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArrayMap::is_empty (bin/../lib/standard//array.nit:456,2--46)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  variable0 = ((array___AbstractArray___is_empty_t)CALL(variable0,COLOR_abstract_collection___Collection___is_empty))(variable0) /*Array::is_empty*/;
+  goto return_label83;
+  return_label83: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+void array___ArrayMap___remove(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayMap::remove (bin/../lib/standard//array.nit:458,2--466:9)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+    val_t variable4;
+    val_t variable5;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*Array::length*/;
+  variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( TAG_Int(1)));
+  variable1 = variable2;
+  while (true) { /*while*/
+    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable2)) break; /* while*/
+    variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+    variable3 =  variable1 /*i*/;
+    variable4 = TAG_Bool(UNTAG_Int( variable3 /*index*/)>=UNTAG_Int( TAG_Int(0)));
+    variable5 = variable4;
+    if (UNTAG_Bool(variable5)) { /* and */
+      variable5 = variable2;
+      variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
+      variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
+    }
+    variable4 = variable5;
+    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert 'index'  failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
+    variable4 = variable2;
+    variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
+    variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
+    goto return_label86;
+    return_label86: while(false);
+    variable2 = variable4;
+    variable2 = ((abstract_collection___Couple___second_t)CALL(variable2,COLOR_abstract_collection___Couple___second))(variable2) /*Couple::second*/;
+    variable2 = TAG_Bool((variable2 ==  variable0 /*item*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*item*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable2)) { /*if*/
+      ((array___ArrayMap___remove_at_index_t)CALL( self,COLOR_array___ArrayMap___remove_at_index))( self,  variable1 /*i*/) /*ArrayMap::remove_at_index*/;
+      goto return_label84;
+    }
+    variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_85: while(0);
+  }
+  break_85: while(0);
+  return_label84: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void array___ArrayMap___remove_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayMap::remove_all (bin/../lib/standard//array.nit:470,2--477:9)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+    val_t variable4;
+    val_t variable5;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*Array::length*/;
+  variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( TAG_Int(1)));
+  variable1 = variable2;
+  while (true) { /*while*/
+    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable2)) break; /* while*/
+    variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+    variable3 =  variable1 /*i*/;
+    variable4 = TAG_Bool(UNTAG_Int( variable3 /*index*/)>=UNTAG_Int( TAG_Int(0)));
+    variable5 = variable4;
+    if (UNTAG_Bool(variable5)) { /* and */
+      variable5 = variable2;
+      variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
+      variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
+    }
+    variable4 = variable5;
+    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert 'index'  failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
+    variable4 = variable2;
+    variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
+    variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
+    goto return_label89;
+    return_label89: while(false);
+    variable2 = variable4;
+    variable2 = ((abstract_collection___Couple___second_t)CALL(variable2,COLOR_abstract_collection___Couple___second))(variable2) /*Couple::second*/;
+    variable2 = TAG_Bool((variable2 ==  variable0 /*item*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*item*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable2)) { /*if*/
+      ((array___ArrayMap___remove_at_index_t)CALL( self,COLOR_array___ArrayMap___remove_at_index))( self,  variable1 /*i*/) /*ArrayMap::remove_at_index*/;
+    }
+    variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_88: while(0);
+  }
+  break_88: while(0);
+  tracehead = trace.prev;
+  return;
+}
+void array___ArrayMap___remove_at(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayMap::remove_at (bin/../lib/standard//array.nit:481,2--484:34)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ((array___ArrayMap___index_t)CALL( self,COLOR_array___ArrayMap___index))( self,  variable0 /*key*/) /*ArrayMap::index*/;
+  variable1 = variable2;
+  variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    ((array___ArrayMap___remove_at_index_t)CALL( self,COLOR_array___ArrayMap___remove_at_index))( self,  variable1 /*i*/) /*ArrayMap::remove_at_index*/;
+  }
+  tracehead = trace.prev;
+  return;
+}
+void array___ArrayMap___clear(val_t  self) {
+  struct trace_t trace = {NULL, "array::ArrayMap::clear (bin/../lib/standard//array.nit:487,2--33)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  ((array___AbstractArray___clear_t)CALL(variable0,COLOR_abstract_collection___RemovableCollection___clear))(variable0) /*Array::clear*/;
+  tracehead = trace.prev;
+  return;
+}
+void array___ArrayMap___enlarge(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayMap::enlarge (bin/../lib/standard//array.nit:489,2--490:45)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  ((array___Array___enlarge_t)CALL(variable1,COLOR_array___AbstractArray___enlarge))(variable1,  variable0 /*cap*/) /*Array::enlarge*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t array___ArrayMap___couple_at(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayMap::couple_at (bin/../lib/standard//array.nit:492,2--498:14)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+    val_t variable3;
+    val_t variable4;
+    val_t variable5;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ((array___ArrayMap___index_t)CALL( self,COLOR_array___ArrayMap___index))( self,  variable0 /*key*/) /*ArrayMap::index*/;
+  variable1 = variable2;
+  variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+    variable3 =  variable1 /*i*/;
+    variable4 = TAG_Bool(UNTAG_Int( variable3 /*index*/)>=UNTAG_Int( TAG_Int(0)));
+    variable5 = variable4;
+    if (UNTAG_Bool(variable5)) { /* and */
+      variable5 = variable2;
+      variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
+      variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
+    }
+    variable4 = variable5;
+    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert 'index'  failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
+    variable4 = variable2;
+    variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
+    variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
+    goto return_label94;
+    return_label94: while(false);
+    variable2 = variable4;
+    variable1 = variable2;
+    goto return_label93;
+  } else { /*if*/
+    variable1 =  NIT_NULL /*null*/;
+    goto return_label93;
+  }
+  return_label93: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+void array___ArrayMap___remove_at_index(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayMap::remove_at_index (bin/../lib/standard//array.nit:505,2--509:12)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  variable2 = ((abstract_collection___IndexedCollection___last_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___last))(variable2) /*Array::last*/;
+  ((array___Array_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1,  variable0 /*i*/, variable2) /*Array::[]=*/;
+  variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  ((array___AbstractArray___pop_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___pop))(variable1) /*Array::pop*/;
+  tracehead = trace.prev;
+  return;
+}
+val_t array___ArrayMap___index(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayMap::index (bin/../lib/standard//array.nit:515,2--530:11)"};
+  val_t variable0;
+  val_t variable1;
+  val_t variable2;
+  val_t variable3;
+    val_t variable4;
+    val_t variable5;
+    val_t variable6;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 =  param0;
+  variable2 = ATTR_array___ArrayMap____last_index( self) /*ArrayMap::_last_index*/;
+  variable1 = variable2;
+  variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+  variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*Array::length*/;
+  variable2 = TAG_Bool(UNTAG_Int( variable1 /*l*/)<UNTAG_Int(variable2));
+  variable3 = variable2;
+  if (UNTAG_Bool(variable3)) { /* and */
+    variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+    variable4 =  variable1 /*l*/;
+    variable5 = TAG_Bool(UNTAG_Int( variable4 /*index*/)>=UNTAG_Int( TAG_Int(0)));
+    variable6 = variable5;
+    if (UNTAG_Bool(variable6)) { /* and */
+      variable6 = variable3;
+      variable6 = ATTR_array___AbstractArray____length(variable6) /*Array::_length*/;
+      variable6 = TAG_Bool(UNTAG_Int( variable4 /*index*/)<UNTAG_Int(variable6));
+    }
+    variable5 = variable6;
+    if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert 'index'  failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
+    variable5 = variable3;
+    variable5 = ATTR_array___Array____items(variable5) /*Array::_items*/;
+    variable5 = UNBOX_NativeArray(variable5)[UNTAG_Int( variable4 /*index*/)];
+    goto return_label97;
+    return_label97: while(false);
+    variable3 = variable5;
+    variable3 = ((abstract_collection___Couple___first_t)CALL(variable3,COLOR_abstract_collection___Couple___first))(variable3) /*Couple::first*/;
+    variable3 = TAG_Bool((variable3 ==  variable0 /*key*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*key*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3,  variable0 /*key*/) /*Object::==*/)))));
+  }
+  variable2 = variable3;
+  if (UNTAG_Bool(variable2)) { /*if*/
+    variable1 =  variable1 /*l*/;
+    goto return_label96;
+  }
+  variable2 =  TAG_Int(0);
+  while (true) { /*while*/
+    variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+    variable3 = ((array___AbstractArray___length_t)CALL(variable3,COLOR_abstract_collection___Collection___length))(variable3) /*Array::length*/;
+    variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int(variable3));
+    if (!UNTAG_Bool(variable3)) break; /* while*/
+    variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
+    variable4 =  variable2 /*i*/;
+    variable5 = TAG_Bool(UNTAG_Int( variable4 /*index*/)>=UNTAG_Int( TAG_Int(0)));
+    variable6 = variable5;
+    if (UNTAG_Bool(variable6)) { /* and */
+      variable6 = variable3;
+      variable6 = ATTR_array___AbstractArray____length(variable6) /*Array::_length*/;
+      variable6 = TAG_Bool(UNTAG_Int( variable4 /*index*/)<UNTAG_Int(variable6));
+    }
+    variable5 = variable6;
+    if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert 'index'  failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
+    variable5 = variable3;
+    variable5 = ATTR_array___Array____items(variable5) /*Array::_items*/;
+    variable5 = UNBOX_NativeArray(variable5)[UNTAG_Int( variable4 /*index*/)];
+    goto return_label99;
+    return_label99: while(false);
+    variable3 = variable5;
+    variable3 = ((abstract_collection___Couple___first_t)CALL(variable3,COLOR_abstract_collection___Couple___first))(variable3) /*Couple::first*/;
+    variable3 = TAG_Bool((variable3 ==  variable0 /*key*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*key*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3,  variable0 /*key*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable3)) { /*if*/
+      ATTR_array___ArrayMap____last_index( self) /*ArrayMap::_last_index*/ =  variable2 /*i*/;
+      variable1 =  variable2 /*i*/;
+      goto return_label96;
+    }
+    variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_98: while(0);
+  }
+  break_98: while(0);
+  variable3 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
+  variable1 = variable3;
+  goto return_label96;
+  return_label96: while(false);
+  tracehead = trace.prev;
+  return variable1;
+}
+void array___ArrayMap___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, "array::ArrayMap::init (bin/../lib/standard//array.nit:533,2--536:31)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArrayMap].i]) return;
+  variable0 = NEW_array___Array___init(); /*new Array[Couple[K, E]]*/
+  ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/ = variable0;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArrayMap].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+val_t array___Iterator___to_a(val_t  self) {
+  struct trace_t trace = {NULL, "array::Iterator::to_a (bin/../lib/standard//array.nit:543,2--551:12)"};
+  val_t variable0;
+  val_t variable1;
+  trace.prev = tracehead; tracehead = &trace;
+  variable1 = NEW_array___Array___init(); /*new Array[E]*/
+  variable0 = variable1;
+  while (true) { /*while*/
+    variable1 = ((abstract_collection___Iterator___is_ok_t)CALL( self,COLOR_abstract_collection___Iterator___is_ok))( self) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable1)) break; /* while*/
+    variable1 = ((abstract_collection___Iterator___item_t)CALL( self,COLOR_abstract_collection___Iterator___item))( self) /*Iterator::item*/;
+    ((array___AbstractArray___add_t)CALL( variable0 /*res*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*res*/, variable1) /*Array::add*/;
+    ((abstract_collection___Iterator___next_t)CALL( self,COLOR_abstract_collection___Iterator___next))( self) /*Iterator::next*/;
+    continue_102: while(0);
+  }
+  break_102: while(0);
+  variable0 =  variable0 /*res*/;
+  goto return_label101;
+  return_label101: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t array___Collection___to_a(val_t  self) {
+  struct trace_t trace = {NULL, "array::Collection::to_a (bin/../lib/standard//array.nit:556,2--559:22)"};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ((abstract_collection___Collection___iterator_t)CALL( self,COLOR_abstract_collection___Collection___iterator))( self) /*Collection::iterator*/;
+  variable0 = ((array___Iterator___to_a_t)CALL(variable0,COLOR_array___Iterator___to_a))(variable0) /*Iterator::to_a*/;
+  goto return_label103;
+  return_label103: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
+val_t array___ArrayCapable___calloc_array(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::ArrayCapable::calloc_array (bin/../lib/standard//array.nit:567,2--568:54)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return BOX_NativeArray((val_t*)malloc((UNTAG_Int( param0) * sizeof(val_t))));
+}
+val_t array___NativeArray_____bra(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, "array::NativeArray::[] (bin/../lib/standard//array.nit:573,2--23)"};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return UNBOX_NativeArray( self)[UNTAG_Int( param0)];
+}
+void array___NativeArray_____braeq(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "array::NativeArray::[]= (bin/../lib/standard//array.nit:574,2--29)"};
+  trace.prev = tracehead; tracehead = &trace;
+  UNBOX_NativeArray( self)[UNTAG_Int( param0)]= param1;
+  tracehead = trace.prev;
+  return;
+}
+void array___NativeArray___copy_to(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, "array::NativeArray::copy_to (bin/../lib/standard//array.nit:575,2--47)"};
+  trace.prev = tracehead; tracehead = &trace;
+  (void)memcpy(UNBOX_NativeArray( param0), UNBOX_NativeArray( self), UNTAG_Int( param1)*sizeof(val_t));
+  tracehead = trace.prev;
+  return;
+}
diff --git a/c_src/array._sep.h b/c_src/array._sep.h
new file mode 100644 (file)
index 0000000..51acd37
--- /dev/null
@@ -0,0 +1,269 @@
+#ifndef array__sep
+#define array__sep
+#include "abstract_collection._sep.h"
+#include <nit_common.h>
+
+extern const classtable_elt_t VFT_AbstractArray[];
+
+extern const classtable_elt_t VFT_Array[];
+
+extern const classtable_elt_t VFT_ArrayIterator[];
+
+extern const classtable_elt_t VFT_ArraySet[];
+
+extern const classtable_elt_t VFT_ArraySetIterator[];
+
+extern const classtable_elt_t VFT_ArrayMap[];
+
+extern const classtable_elt_t VFT_ArrayCapable[];
+
+extern const classtable_elt_t VFT_NativeArray[];
+struct TBOX_NativeArray { const classtable_elt_t * vft; val_t * val;};
+val_t BOX_NativeArray(val_t * val);
+#define UNBOX_NativeArray(x) (((struct TBOX_NativeArray *)(VAL2OBJ(x)))->val)
+extern const int SFT_array[];
+#define ID_AbstractArray SFT_array[0]
+#define COLOR_AbstractArray SFT_array[1]
+#define COLOR_array___AbstractArray____length SFT_array[2]
+#define INIT_TABLE_POS_AbstractArray SFT_array[3]
+#define COLOR_array___AbstractArray___enlarge SFT_array[4]
+#define COLOR_array___AbstractArray___insert SFT_array[5]
+#define COLOR_array___AbstractArray___last_index_of SFT_array[6]
+#define COLOR_array___AbstractArray___index_of_from SFT_array[7]
+#define COLOR_array___AbstractArray___last_index_of_from SFT_array[8]
+#define COLOR_array___AbstractArray___reversed SFT_array[9]
+#define COLOR_array___AbstractArray___copy_to SFT_array[10]
+#define ID_Array SFT_array[11]
+#define COLOR_Array SFT_array[12]
+#define COLOR_array___Array____items SFT_array[13]
+#define COLOR_array___Array____capacity SFT_array[14]
+#define INIT_TABLE_POS_Array SFT_array[15]
+#define COLOR_array___Array___init SFT_array[16]
+#define COLOR_array___Array___with SFT_array[17]
+#define COLOR_array___Array___with_capacity SFT_array[18]
+#define COLOR_array___Array___filled_with SFT_array[19]
+#define COLOR_array___Array___with_native SFT_array[20]
+#define ID_ArrayIterator SFT_array[21]
+#define COLOR_ArrayIterator SFT_array[22]
+#define COLOR_array___ArrayIterator____index SFT_array[23]
+#define COLOR_array___ArrayIterator____array SFT_array[24]
+#define INIT_TABLE_POS_ArrayIterator SFT_array[25]
+#define COLOR_array___ArrayIterator___init SFT_array[26]
+#define ID_ArraySet SFT_array[27]
+#define COLOR_ArraySet SFT_array[28]
+#define COLOR_array___ArraySet____array SFT_array[29]
+#define INIT_TABLE_POS_ArraySet SFT_array[30]
+#define COLOR_array___ArraySet___enlarge SFT_array[31]
+#define COLOR_array___ArraySet___remove_at SFT_array[32]
+#define COLOR_array___ArraySet___init SFT_array[33]
+#define COLOR_array___ArraySet___with_capacity SFT_array[34]
+#define ID_ArraySetIterator SFT_array[35]
+#define COLOR_ArraySetIterator SFT_array[36]
+#define COLOR_array___ArraySetIterator____iter SFT_array[37]
+#define INIT_TABLE_POS_ArraySetIterator SFT_array[38]
+#define COLOR_array___ArraySetIterator___init SFT_array[39]
+#define ID_ArrayMap SFT_array[40]
+#define COLOR_ArrayMap SFT_array[41]
+#define COLOR_array___ArrayMap____items SFT_array[42]
+#define COLOR_array___ArrayMap____last_index SFT_array[43]
+#define INIT_TABLE_POS_ArrayMap SFT_array[44]
+#define COLOR_array___ArrayMap___enlarge SFT_array[45]
+#define COLOR_array___ArrayMap___remove_at_index SFT_array[46]
+#define COLOR_array___ArrayMap___index SFT_array[47]
+#define COLOR_array___ArrayMap___init SFT_array[48]
+#define COLOR_array___Iterator___to_a SFT_array[49]
+#define COLOR_array___Collection___to_a SFT_array[50]
+#define ID_ArrayCapable SFT_array[51]
+#define COLOR_ArrayCapable SFT_array[52]
+#define INIT_TABLE_POS_ArrayCapable SFT_array[53]
+#define COLOR_array___ArrayCapable___calloc_array SFT_array[54]
+#define ID_NativeArray SFT_array[55]
+#define COLOR_NativeArray SFT_array[56]
+#define INIT_TABLE_POS_NativeArray SFT_array[57]
+#define COLOR_array___NativeArray_____bra SFT_array[58]
+#define COLOR_array___NativeArray_____braeq SFT_array[59]
+#define COLOR_array___NativeArray___copy_to SFT_array[60]
+typedef void (* array___AbstractArray___enlarge_t)(val_t  self, val_t  param0);
+void array___AbstractArray___enlarge(val_t  self, val_t  param0);
+#define ATTR_array___AbstractArray____length(recv) ATTR(recv, COLOR_array___AbstractArray____length)
+typedef val_t (* array___AbstractArray___length_t)(val_t  self);
+val_t array___AbstractArray___length(val_t  self);
+typedef val_t (* array___AbstractArray___is_empty_t)(val_t  self);
+val_t array___AbstractArray___is_empty(val_t  self);
+typedef void (* array___AbstractArray___push_t)(val_t  self, val_t  param0);
+void array___AbstractArray___push(val_t  self, val_t  param0);
+typedef val_t (* array___AbstractArray___pop_t)(val_t  self);
+val_t array___AbstractArray___pop(val_t  self);
+typedef val_t (* array___AbstractArray___shift_t)(val_t  self);
+val_t array___AbstractArray___shift(val_t  self);
+typedef void (* array___AbstractArray___unshift_t)(val_t  self, val_t  param0);
+void array___AbstractArray___unshift(val_t  self, val_t  param0);
+typedef void (* array___AbstractArray___insert_t)(val_t  self, val_t  param0, val_t  param1);
+void array___AbstractArray___insert(val_t  self, val_t  param0, val_t  param1);
+typedef void (* array___AbstractArray___add_t)(val_t  self, val_t  param0);
+void array___AbstractArray___add(val_t  self, val_t  param0);
+typedef void (* array___AbstractArray___clear_t)(val_t  self);
+void array___AbstractArray___clear(val_t  self);
+typedef val_t (* array___AbstractArray___has_t)(val_t  self, val_t  param0);
+val_t array___AbstractArray___has(val_t  self, val_t  param0);
+typedef val_t (* array___AbstractArray___has_only_t)(val_t  self, val_t  param0);
+val_t array___AbstractArray___has_only(val_t  self, val_t  param0);
+typedef val_t (* array___AbstractArray___has_key_t)(val_t  self, val_t  param0);
+val_t array___AbstractArray___has_key(val_t  self, val_t  param0);
+typedef val_t (* array___AbstractArray___count_t)(val_t  self, val_t  param0);
+val_t array___AbstractArray___count(val_t  self, val_t  param0);
+typedef val_t (* array___AbstractArray___index_of_t)(val_t  self, val_t  param0);
+val_t array___AbstractArray___index_of(val_t  self, val_t  param0);
+typedef val_t (* array___AbstractArray___last_index_of_t)(val_t  self, val_t  param0);
+val_t array___AbstractArray___last_index_of(val_t  self, val_t  param0);
+typedef val_t (* array___AbstractArray___index_of_from_t)(val_t  self, val_t  param0, val_t  param1);
+val_t array___AbstractArray___index_of_from(val_t  self, val_t  param0, val_t  param1);
+typedef val_t (* array___AbstractArray___last_index_of_from_t)(val_t  self, val_t  param0, val_t  param1);
+val_t array___AbstractArray___last_index_of_from(val_t  self, val_t  param0, val_t  param1);
+typedef val_t (* array___AbstractArray___reversed_t)(val_t  self);
+val_t array___AbstractArray___reversed(val_t  self);
+typedef void (* array___AbstractArray___remove_t)(val_t  self, val_t  param0);
+void array___AbstractArray___remove(val_t  self, val_t  param0);
+typedef void (* array___AbstractArray___remove_all_t)(val_t  self, val_t  param0);
+void array___AbstractArray___remove_all(val_t  self, val_t  param0);
+typedef void (* array___AbstractArray___remove_at_t)(val_t  self, val_t  param0);
+void array___AbstractArray___remove_at(val_t  self, val_t  param0);
+typedef void (* array___AbstractArray___copy_to_t)(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3);
+void array___AbstractArray___copy_to(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3);
+typedef void (* array___AbstractArray___output_t)(val_t  self);
+void array___AbstractArray___output(val_t  self);
+typedef val_t (* array___AbstractArray___iterator_t)(val_t  self);
+val_t array___AbstractArray___iterator(val_t  self);
+typedef val_t (* array___AbstractArray_____eqeq_t)(val_t  self, val_t  param0);
+val_t array___AbstractArray_____eqeq(val_t  self, val_t  param0);
+typedef val_t (* array___Array_____bra_t)(val_t  self, val_t  param0);
+val_t array___Array_____bra(val_t  self, val_t  param0);
+typedef void (* array___Array_____braeq_t)(val_t  self, val_t  param0, val_t  param1);
+void array___Array_____braeq(val_t  self, val_t  param0, val_t  param1);
+typedef void (* array___Array___enlarge_t)(val_t  self, val_t  param0);
+void array___Array___enlarge(val_t  self, val_t  param0);
+typedef void (* array___Array___init_t)(val_t  self, int* init_table);
+void array___Array___init(val_t  self, int* init_table);
+val_t NEW_array___Array___init();
+typedef void (* array___Array___with_t)(val_t  self, val_t  param0, int* init_table);
+void array___Array___with(val_t  self, val_t  param0, int* init_table);
+val_t NEW_array___Array___with(val_t  param0);
+typedef void (* array___Array___with_capacity_t)(val_t  self, val_t  param0, int* init_table);
+void array___Array___with_capacity(val_t  self, val_t  param0, int* init_table);
+val_t NEW_array___Array___with_capacity(val_t  param0);
+typedef void (* array___Array___filled_with_t)(val_t  self, val_t  param0, val_t  param1, int* init_table);
+void array___Array___filled_with(val_t  self, val_t  param0, val_t  param1, int* init_table);
+val_t NEW_array___Array___filled_with(val_t  param0, val_t  param1);
+typedef void (* array___Array___with_native_t)(val_t  self, val_t  param0, val_t  param1, int* init_table);
+void array___Array___with_native(val_t  self, val_t  param0, val_t  param1, int* init_table);
+val_t NEW_array___Array___with_native(val_t  param0, val_t  param1);
+#define ATTR_array___Array____items(recv) ATTR(recv, COLOR_array___Array____items)
+#define ATTR_array___Array____capacity(recv) ATTR(recv, COLOR_array___Array____capacity)
+typedef val_t (* array___ArrayIterator___item_t)(val_t  self);
+val_t array___ArrayIterator___item(val_t  self);
+typedef void (* array___ArrayIterator___item__eq_t)(val_t  self, val_t  param0);
+void array___ArrayIterator___item__eq(val_t  self, val_t  param0);
+typedef val_t (* array___ArrayIterator___is_ok_t)(val_t  self);
+val_t array___ArrayIterator___is_ok(val_t  self);
+typedef void (* array___ArrayIterator___next_t)(val_t  self);
+void array___ArrayIterator___next(val_t  self);
+typedef void (* array___ArrayIterator___init_t)(val_t  self, val_t  param0, int* init_table);
+void array___ArrayIterator___init(val_t  self, val_t  param0, int* init_table);
+val_t NEW_array___ArrayIterator___init(val_t  param0);
+#define ATTR_array___ArrayIterator____index(recv) ATTR(recv, COLOR_array___ArrayIterator____index)
+typedef val_t (* array___ArrayIterator___index_t)(val_t  self);
+val_t array___ArrayIterator___index(val_t  self);
+#define ATTR_array___ArrayIterator____array(recv) ATTR(recv, COLOR_array___ArrayIterator____array)
+#define ATTR_array___ArraySet____array(recv) ATTR(recv, COLOR_array___ArraySet____array)
+typedef val_t (* array___ArraySet___has_t)(val_t  self, val_t  param0);
+val_t array___ArraySet___has(val_t  self, val_t  param0);
+typedef void (* array___ArraySet___add_t)(val_t  self, val_t  param0);
+void array___ArraySet___add(val_t  self, val_t  param0);
+typedef val_t (* array___ArraySet___is_empty_t)(val_t  self);
+val_t array___ArraySet___is_empty(val_t  self);
+typedef val_t (* array___ArraySet___length_t)(val_t  self);
+val_t array___ArraySet___length(val_t  self);
+typedef val_t (* array___ArraySet___first_t)(val_t  self);
+val_t array___ArraySet___first(val_t  self);
+typedef void (* array___ArraySet___remove_t)(val_t  self, val_t  param0);
+void array___ArraySet___remove(val_t  self, val_t  param0);
+typedef void (* array___ArraySet___remove_all_t)(val_t  self, val_t  param0);
+void array___ArraySet___remove_all(val_t  self, val_t  param0);
+typedef void (* array___ArraySet___clear_t)(val_t  self);
+void array___ArraySet___clear(val_t  self);
+typedef val_t (* array___ArraySet___iterator_t)(val_t  self);
+val_t array___ArraySet___iterator(val_t  self);
+typedef void (* array___ArraySet___enlarge_t)(val_t  self, val_t  param0);
+void array___ArraySet___enlarge(val_t  self, val_t  param0);
+typedef void (* array___ArraySet___remove_at_t)(val_t  self, val_t  param0);
+void array___ArraySet___remove_at(val_t  self, val_t  param0);
+typedef void (* array___ArraySet___init_t)(val_t  self, int* init_table);
+void array___ArraySet___init(val_t  self, int* init_table);
+val_t NEW_array___ArraySet___init();
+typedef void (* array___ArraySet___with_capacity_t)(val_t  self, val_t  param0, int* init_table);
+void array___ArraySet___with_capacity(val_t  self, val_t  param0, int* init_table);
+val_t NEW_array___ArraySet___with_capacity(val_t  param0);
+typedef val_t (* array___ArraySetIterator___is_ok_t)(val_t  self);
+val_t array___ArraySetIterator___is_ok(val_t  self);
+typedef void (* array___ArraySetIterator___next_t)(val_t  self);
+void array___ArraySetIterator___next(val_t  self);
+typedef val_t (* array___ArraySetIterator___item_t)(val_t  self);
+val_t array___ArraySetIterator___item(val_t  self);
+typedef void (* array___ArraySetIterator___init_t)(val_t  self, val_t  param0, int* init_table);
+void array___ArraySetIterator___init(val_t  self, val_t  param0, int* init_table);
+val_t NEW_array___ArraySetIterator___init(val_t  param0);
+#define ATTR_array___ArraySetIterator____iter(recv) ATTR(recv, COLOR_array___ArraySetIterator____iter)
+typedef val_t (* array___ArrayMap_____bra_t)(val_t  self, val_t  param0);
+val_t array___ArrayMap_____bra(val_t  self, val_t  param0);
+typedef void (* array___ArrayMap_____braeq_t)(val_t  self, val_t  param0, val_t  param1);
+void array___ArrayMap_____braeq(val_t  self, val_t  param0, val_t  param1);
+typedef val_t (* array___ArrayMap___has_key_t)(val_t  self, val_t  param0);
+val_t array___ArrayMap___has_key(val_t  self, val_t  param0);
+typedef val_t (* array___ArrayMap___has_t)(val_t  self, val_t  param0);
+val_t array___ArrayMap___has(val_t  self, val_t  param0);
+typedef val_t (* array___ArrayMap___has_only_t)(val_t  self, val_t  param0);
+val_t array___ArrayMap___has_only(val_t  self, val_t  param0)