+/* method modelize_property#ModelBuilder#check_visibility for (self: Object, ANode, MType, MPropDef) */
+void VIRTUAL_modelize_property__ModelBuilder__check_visibility(val* self, val* p0, val* p1, val* p2) {
+modelize_property__ModelBuilder__check_visibility(self, p0, p1, p2); /* Direct call modelize_property#ModelBuilder#check_visibility on <self:Object(ModelBuilder)>*/
+RET_LABEL:;
+}
+/* method modelize_property#MPropDef#has_supercall for (self: MPropDef): Bool */
+short int modelize_property__MPropDef__has_supercall(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = self->attrs[COLOR_modelize_property__MPropDef___has_supercall].s; /* _has_supercall on <self:MPropDef> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#MPropDef#has_supercall for (self: Object): Bool */
+short int VIRTUAL_modelize_property__MPropDef__has_supercall(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+{ /* Inline modelize_property#MPropDef#has_supercall (self) on <self:Object(MPropDef)> */
+var3 = self->attrs[COLOR_modelize_property__MPropDef___has_supercall].s; /* _has_supercall on <self:Object(MPropDef)> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#MPropDef#has_supercall= for (self: MPropDef, Bool) */
+void modelize_property__MPropDef__has_supercall_61d(val* self, short int p0) {
+self->attrs[COLOR_modelize_property__MPropDef___has_supercall].s = p0; /* _has_supercall on <self:MPropDef> */
+RET_LABEL:;
+}
+/* method modelize_property#MPropDef#has_supercall= for (self: Object, Bool) */
+void VIRTUAL_modelize_property__MPropDef__has_supercall_61d(val* self, short int p0) {
+{ /* Inline modelize_property#MPropDef#has_supercall= (self,p0) on <self:Object(MPropDef)> */
+self->attrs[COLOR_modelize_property__MPropDef___has_supercall].s = p0; /* _has_supercall on <self:Object(MPropDef)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method modelize_property#AClassdef#build_properties_is_done for (self: AClassdef): Bool */
+short int modelize_property__AClassdef__build_properties_is_done(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = self->attrs[COLOR_modelize_property__AClassdef___build_properties_is_done].s; /* _build_properties_is_done on <self:AClassdef> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#AClassdef#build_properties_is_done for (self: Object): Bool */
+short int VIRTUAL_modelize_property__AClassdef__build_properties_is_done(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+{ /* Inline modelize_property#AClassdef#build_properties_is_done (self) on <self:Object(AClassdef)> */
+var3 = self->attrs[COLOR_modelize_property__AClassdef___build_properties_is_done].s; /* _build_properties_is_done on <self:Object(AClassdef)> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#AClassdef#build_properties_is_done= for (self: AClassdef, Bool) */
+void modelize_property__AClassdef__build_properties_is_done_61d(val* self, short int p0) {
+self->attrs[COLOR_modelize_property__AClassdef___build_properties_is_done].s = p0; /* _build_properties_is_done on <self:AClassdef> */
+RET_LABEL:;
+}
+/* method modelize_property#AClassdef#build_properties_is_done= for (self: Object, Bool) */
+void VIRTUAL_modelize_property__AClassdef__build_properties_is_done_61d(val* self, short int p0) {
+{ /* Inline modelize_property#AClassdef#build_properties_is_done= (self,p0) on <self:Object(AClassdef)> */
+self->attrs[COLOR_modelize_property__AClassdef___build_properties_is_done].s = p0; /* _build_properties_is_done on <self:Object(AClassdef)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method modelize_property#AClassdef#mfree_init for (self: AClassdef): nullable MMethodDef */
+val* modelize_property__AClassdef__mfree_init(val* self) {
+val* var /* : nullable MMethodDef */;
+val* var1 /* : nullable MMethodDef */;
+var1 = self->attrs[COLOR_modelize_property__AClassdef___mfree_init].val; /* _mfree_init on <self:AClassdef> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#AClassdef#mfree_init for (self: Object): nullable MMethodDef */
+val* VIRTUAL_modelize_property__AClassdef__mfree_init(val* self) {
+val* var /* : nullable MMethodDef */;
+val* var1 /* : nullable MMethodDef */;
+val* var3 /* : nullable MMethodDef */;
+{ /* Inline modelize_property#AClassdef#mfree_init (self) on <self:Object(AClassdef)> */
+var3 = self->attrs[COLOR_modelize_property__AClassdef___mfree_init].val; /* _mfree_init on <self:Object(AClassdef)> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#AClassdef#mfree_init= for (self: AClassdef, nullable MMethodDef) */
+void modelize_property__AClassdef__mfree_init_61d(val* self, val* p0) {
+self->attrs[COLOR_modelize_property__AClassdef___mfree_init].val = p0; /* _mfree_init on <self:AClassdef> */
+RET_LABEL:;
+}
+/* method modelize_property#AClassdef#mfree_init= for (self: Object, nullable MMethodDef) */
+void VIRTUAL_modelize_property__AClassdef__mfree_init_61d(val* self, val* p0) {
+{ /* Inline modelize_property#AClassdef#mfree_init= (self,p0) on <self:Object(AClassdef)> */
+self->attrs[COLOR_modelize_property__AClassdef___mfree_init].val = p0; /* _mfree_init on <self:Object(AClassdef)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method modelize_property#MClass#root_init for (self: MClass): nullable MMethodDef */
+val* modelize_property__MClass__root_init(val* self) {
+val* var /* : nullable MMethodDef */;
+val* var1 /* : nullable MMethodDef */;
+var1 = self->attrs[COLOR_modelize_property__MClass___root_init].val; /* _root_init on <self:MClass> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#MClass#root_init for (self: Object): nullable MMethodDef */
+val* VIRTUAL_modelize_property__MClass__root_init(val* self) {
+val* var /* : nullable MMethodDef */;
+val* var1 /* : nullable MMethodDef */;
+val* var3 /* : nullable MMethodDef */;
+{ /* Inline modelize_property#MClass#root_init (self) on <self:Object(MClass)> */
+var3 = self->attrs[COLOR_modelize_property__MClass___root_init].val; /* _root_init on <self:Object(MClass)> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#MClass#root_init= for (self: MClass, nullable MMethodDef) */
+void modelize_property__MClass__root_init_61d(val* self, val* p0) {
+self->attrs[COLOR_modelize_property__MClass___root_init].val = p0; /* _root_init on <self:MClass> */
+RET_LABEL:;
+}
+/* method modelize_property#MClass#root_init= for (self: Object, nullable MMethodDef) */
+void VIRTUAL_modelize_property__MClass__root_init_61d(val* self, val* p0) {
+{ /* Inline modelize_property#MClass#root_init= (self,p0) on <self:Object(MClass)> */
+self->attrs[COLOR_modelize_property__MClass___root_init].val = p0; /* _root_init on <self:Object(MClass)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method modelize_property#MClassDef#mprop2npropdef for (self: MClassDef): Map[MProperty, APropdef] */
+val* modelize_property__MClassDef__mprop2npropdef(val* self) {
+val* var /* : Map[MProperty, APropdef] */;
+val* var1 /* : Map[MProperty, APropdef] */;
+var1 = self->attrs[COLOR_modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <self:MClassDef> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
+PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 310);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#MClassDef#mprop2npropdef for (self: Object): Map[MProperty, APropdef] */
+val* VIRTUAL_modelize_property__MClassDef__mprop2npropdef(val* self) {
+val* var /* : Map[MProperty, APropdef] */;
+val* var1 /* : Map[MProperty, APropdef] */;
+val* var3 /* : Map[MProperty, APropdef] */;
+{ /* Inline modelize_property#MClassDef#mprop2npropdef (self) on <self:Object(MClassDef)> */
+var3 = self->attrs[COLOR_modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <self:Object(MClassDef)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
+PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 310);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#APropdef#mpropdef for (self: APropdef): nullable MPropDef */
+val* modelize_property__APropdef__mpropdef(val* self) {
+val* var /* : nullable MPropDef */;
+val* var1 /* : nullable MPropDef */;
+var1 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:APropdef> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#APropdef#mpropdef for (self: Object): nullable MPropDef */
+val* VIRTUAL_modelize_property__APropdef__mpropdef(val* self) {
+val* var /* : nullable MPropDef */;
+val* var1 /* : nullable MPropDef */;
+val* var3 /* : nullable MPropDef */;
+{ /* Inline modelize_property#APropdef#mpropdef (self) on <self:Object(APropdef)> */
+var3 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:Object(APropdef)> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#APropdef#mpropdef= for (self: APropdef, nullable MPropDef) */
+void modelize_property__APropdef__mpropdef_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+/* Covariant cast for argument 0 (mpropdef) <p0:nullable MPropDef> isa nullable MPROPDEF */
+/* <p0:nullable MPropDef> isa nullable MPROPDEF */
+type_struct = self->type->resolution_table->types[COLOR_nullable_parser_nodes__APropdef_VTMPROPDEF];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(p0 == NULL) {
+var = 1;
+} else {
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var)) {
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 319);
+show_backtrace(1);
+}
+self->attrs[COLOR_modelize_property__APropdef___mpropdef].val = p0; /* _mpropdef on <self:APropdef> */
+RET_LABEL:;
+}
+/* method modelize_property#APropdef#mpropdef= for (self: Object, nullable MPropDef) */
+void VIRTUAL_modelize_property__APropdef__mpropdef_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+{ /* Inline modelize_property#APropdef#mpropdef= (self,p0) on <self:Object(APropdef)> */
+/* Covariant cast for argument 0 (mpropdef) <p0:nullable MPropDef> isa nullable MPROPDEF */
+/* <p0:nullable MPropDef> isa nullable MPROPDEF */
+type_struct = self->type->resolution_table->types[COLOR_nullable_parser_nodes__APropdef_VTMPROPDEF];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(p0 == NULL) {
+var = 1;
+} else {
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var)) {
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 319);
+show_backtrace(1);
+}
+self->attrs[COLOR_modelize_property__APropdef___mpropdef].val = p0; /* _mpropdef on <self:Object(APropdef)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method modelize_property#APropdef#new_property_visibility for (self: APropdef, ModelBuilder, MClassDef, nullable AVisibility): MVisibility */
+val* modelize_property__APropdef__new_property_visibility(val* self, val* p0, val* p1, val* p2) {
+val* var /* : MVisibility */;
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+val* var_mclassdef /* var mclassdef: MClassDef */;
+val* var_nvisibility /* var nvisibility: nullable AVisibility */;
+val* var1 /* : MVisibility */;
+val* var_mvisibility /* var mvisibility: MVisibility */;
+val* var2 /* : null */;
+short int var3 /* : Bool */;
+short int var4 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+short int var8 /* : Bool */;
+val* var9 /* : MVisibility */;
+val* var10 /* : MVisibility */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
+val* var_other14 /* var other: nullable Object */;
+short int var15 /* : Bool */;
+short int var17 /* : Bool */;
+static val* varonce;
+val* var18 /* : String */;
+char* var19 /* : NativeString */;
+long var20 /* : Int */;
+val* var21 /* : FlatString */;
+val* var22 /* : MVisibility */;
+val* var23 /* : MClass */;
+val* var25 /* : MClass */;
+val* var26 /* : MVisibility */;
+val* var28 /* : MVisibility */;
+val* var29 /* : MVisibility */;
+short int var30 /* : Bool */;
+short int var31 /* : Bool */;
+short int var33 /* : Bool */;
+short int var35 /* : Bool */;
+val* var36 /* : MVisibility */;
+short int var37 /* : Bool */;
+short int var38 /* : Bool */;
+short int var40 /* : Bool */;
+short int var42 /* : Bool */;
+val* var43 /* : null */;
+short int var44 /* : Bool */;
+short int var45 /* : Bool */;
+short int var47 /* : Bool */;
+short int var48 /* : Bool */;
+short int var49 /* : Bool */;
+static val* varonce50;
+val* var51 /* : String */;
+char* var52 /* : NativeString */;
+long var53 /* : Int */;
+val* var54 /* : FlatString */;
+val* var55 /* : MVisibility */;
+short int var56 /* : Bool */;
+short int var57 /* : Bool */;
+short int var59 /* : Bool */;
+short int var61 /* : Bool */;
+val* var62 /* : null */;
+short int var63 /* : Bool */;
+short int var64 /* : Bool */;
+short int var66 /* : Bool */;
+short int var67 /* : Bool */;
+short int var68 /* : Bool */;
+static val* varonce69;
+val* var70 /* : String */;
+char* var71 /* : NativeString */;
+long var72 /* : Int */;
+val* var73 /* : FlatString */;
+static val* varonce74;
+val* var75 /* : String */;
+char* var76 /* : NativeString */;
+long var77 /* : Int */;
+val* var78 /* : FlatString */;
+val* var79 /* : MVisibility */;
+var_modelbuilder = p0;
+var_mclassdef = p1;
+var_nvisibility = p2;
+{
+var1 = model_base__Object__public_visibility(self);
+}
+var_mvisibility = var1;
+var2 = NULL;
+if (var_nvisibility == NULL) {
+var3 = 0; /* is null */
+} else {
+var3 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_nvisibility,var2) on <var_nvisibility:nullable AVisibility> */
+var_other = var2;
+{
+var7 = ((short int (*)(val*, val*))(var_nvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_nvisibility, var_other) /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
+var6 = var7;
+}
+var8 = !var6;
+var4 = var8;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+var3 = var4;
+}
+if (var3){
+{
+var9 = ((val* (*)(val*))(var_nvisibility->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var_nvisibility) /* mvisibility on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
+}
+var_mvisibility = var9;
+{
+var10 = model_base__Object__intrude_visibility(self);
+}
+{
+{ /* Inline kernel#Object#== (var_mvisibility,var10) on <var_mvisibility:MVisibility> */
+var_other14 = var10;
+{
+{ /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other14) on <var_mvisibility:MVisibility> */
+var17 = var_mvisibility == var_other14;
+var15 = var17;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
+}
+}
+var12 = var15;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+var11 = var12;
+}
+if (var11){
+if (varonce) {
+var18 = varonce;
+} else {
+var19 = "Error: intrude is not a legal visibility for properties.";
+var20 = 56;
+var21 = string__NativeString__to_s_with_length(var19, var20);
+var18 = var21;
+varonce = var18;
+}
+{
+modelbuilder__ModelBuilder__error(var_modelbuilder, var_nvisibility, var18); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+}
+{
+var22 = model_base__Object__public_visibility(self);
+}
+var_mvisibility = var22;
+} else {
+}
+} else {
+}
+{
+{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
+var25 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
+if (unlikely(var25 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
+show_backtrace(1);
+}
+var23 = var25;
+RET_LABEL24:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#visibility (var23) on <var23:MClass> */
+var28 = var23->attrs[COLOR_model__MClass___visibility].val; /* _visibility on <var23:MClass> */
+if (unlikely(var28 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 375);
+show_backtrace(1);
+}
+var26 = var28;
+RET_LABEL27:(void)0;
+}
+}
+{
+var29 = model_base__Object__private_visibility(self);
+}
+{
+{ /* Inline kernel#Object#== (var26,var29) on <var26:MVisibility> */
+var_other14 = var29;
+{
+{ /* Inline kernel#Object#is_same_instance (var26,var_other14) on <var26:MVisibility> */
+var35 = var26 == var_other14;
+var33 = var35;
+goto RET_LABEL34;
+RET_LABEL34:(void)0;
+}
+}
+var31 = var33;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
+}
+var30 = var31;
+}
+if (var30){
+{
+var36 = model_base__Object__protected_visibility(self);
+}
+{
+{ /* Inline kernel#Object#== (var_mvisibility,var36) on <var_mvisibility:MVisibility> */
+var_other14 = var36;
+{
+{ /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other14) on <var_mvisibility:MVisibility> */
+var42 = var_mvisibility == var_other14;
+var40 = var42;
+goto RET_LABEL41;
+RET_LABEL41:(void)0;
+}
+}
+var38 = var40;
+goto RET_LABEL39;
+RET_LABEL39:(void)0;
+}
+var37 = var38;
+}
+if (var37){
+var43 = NULL;
+if (var_nvisibility == NULL) {
+var44 = 0; /* is null */
+} else {
+var44 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_nvisibility,var43) on <var_nvisibility:nullable AVisibility> */
+var_other = var43;
+{
+var48 = ((short int (*)(val*, val*))(var_nvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_nvisibility, var_other) /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
+var47 = var48;
+}
+var49 = !var47;
+var45 = var49;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
+}
+var44 = var45;
+}
+if (unlikely(!var44)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 337);
+show_backtrace(1);
+}
+if (varonce50) {
+var51 = varonce50;
+} else {
+var52 = "Error: The only legal visibility for properties in a private class is private.";
+var53 = 78;
+var54 = string__NativeString__to_s_with_length(var52, var53);
+var51 = var54;
+varonce50 = var51;
+}
+{
+modelbuilder__ModelBuilder__error(var_modelbuilder, var_nvisibility, var51); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+}
+} else {
+{
+var55 = model_base__Object__private_visibility(self);
+}
+{
+{ /* Inline kernel#Object#== (var_mvisibility,var55) on <var_mvisibility:MVisibility> */
+var_other14 = var55;
+{
+{ /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other14) on <var_mvisibility:MVisibility> */
+var61 = var_mvisibility == var_other14;
+var59 = var61;
+goto RET_LABEL60;
+RET_LABEL60:(void)0;
+}
+}
+var57 = var59;
+goto RET_LABEL58;
+RET_LABEL58:(void)0;
+}
+var56 = var57;
+}
+if (var56){
+var62 = NULL;
+if (var_nvisibility == NULL) {
+var63 = 0; /* is null */
+} else {
+var63 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_nvisibility,var62) on <var_nvisibility:nullable AVisibility> */
+var_other = var62;
+{
+var67 = ((short int (*)(val*, val*))(var_nvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_nvisibility, var_other) /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
+var66 = var67;
+}
+var68 = !var66;
+var64 = var68;
+goto RET_LABEL65;
+RET_LABEL65:(void)0;
+}
+var63 = var64;
+}
+if (unlikely(!var63)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 340);
+show_backtrace(1);
+}
+if (varonce69) {
+var70 = varonce69;
+} else {
+var71 = "useless-visibility";
+var72 = 18;
+var73 = string__NativeString__to_s_with_length(var71, var72);
+var70 = var73;
+varonce69 = var70;
+}
+if (varonce74) {
+var75 = varonce74;
+} else {
+var76 = "Warning: private is superfluous since the only legal visibility for properties in a private class is private.";
+var77 = 109;
+var78 = string__NativeString__to_s_with_length(var76, var77);
+var75 = var78;
+varonce74 = var75;
+}
+{
+modelbuilder__ModelBuilder__advice(var_modelbuilder, var_nvisibility, var70, var75); /* Direct call modelbuilder#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
+}
+} else {
+}
+}
+{
+var79 = model_base__Object__private_visibility(self);
+}
+var_mvisibility = var79;
+} else {
+}
+var = var_mvisibility;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#APropdef#new_property_visibility for (self: Object, ModelBuilder, MClassDef, nullable AVisibility): MVisibility */
+val* VIRTUAL_modelize_property__APropdef__new_property_visibility(val* self, val* p0, val* p1, val* p2) {
+val* var /* : MVisibility */;
+val* var1 /* : MVisibility */;
+var1 = modelize_property__APropdef__new_property_visibility(self, p0, p1, p2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#APropdef#set_doc for (self: APropdef, MPropDef, ModelBuilder) */
+void modelize_property__APropdef__set_doc(val* self, val* p0, val* p1) {
+val* var_mpropdef /* var mpropdef: MPropDef */;
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+val* var /* : nullable ADoc */;
+val* var2 /* : nullable ADoc */;
+val* var_ndoc /* var ndoc: nullable ADoc */;
+val* var3 /* : null */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var7 /* : Bool */;
+short int var8 /* : Bool */;
+short int var9 /* : Bool */;
+val* var10 /* : MDoc */;
+val* var_mdoc /* var mdoc: MDoc */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var15 /* : MProperty */;
+val* var17 /* : MProperty */;
+val* var18 /* : MVisibility */;
+val* var20 /* : MVisibility */;
+val* var21 /* : MVisibility */;
+short int var22 /* : Bool */;
+static val* varonce;
+val* var23 /* : String */;
+char* var24 /* : NativeString */;
+long var25 /* : Int */;
+val* var26 /* : FlatString */;
+static val* varonce27;
+val* var28 /* : String */;
+char* var29 /* : NativeString */;
+long var30 /* : Int */;
+val* var31 /* : FlatString */;
+val* var32 /* : MProperty */;
+val* var34 /* : MProperty */;
+static val* varonce35;
+val* var36 /* : String */;
+char* var37 /* : NativeString */;
+long var38 /* : Int */;
+val* var39 /* : FlatString */;
+val* var40 /* : Array[Object] */;
+long var41 /* : Int */;
+val* var42 /* : NativeArray[Object] */;
+val* var43 /* : String */;
+static val* varonce44;
+val* var45 /* : String */;
+char* var46 /* : NativeString */;
+long var47 /* : Int */;
+val* var48 /* : FlatString */;
+val* var49 /* : nullable AAnnotation */;
+val* var_at_deprecated /* var at_deprecated: nullable AAnnotation */;
+val* var50 /* : null */;
+short int var51 /* : Bool */;
+short int var52 /* : Bool */;
+short int var54 /* : Bool */;
+short int var55 /* : Bool */;
+short int var56 /* : Bool */;
+short int var57 /* : Bool */;
+short int var58 /* : Bool */;
+static val* varonce59;
+val* var60 /* : String */;
+char* var61 /* : NativeString */;
+long var62 /* : Int */;
+val* var63 /* : FlatString */;
+val* var64 /* : MDeprecationInfo */;
+val* var_info /* var info: MDeprecationInfo */;
+val* var65 /* : nullable ADoc */;
+val* var67 /* : nullable ADoc */;
+val* var68 /* : null */;
+short int var69 /* : Bool */;
+short int var70 /* : Bool */;
+short int var72 /* : Bool */;
+short int var73 /* : Bool */;
+short int var74 /* : Bool */;
+val* var75 /* : MDoc */;
+val* var77 /* : MProperty */;
+val* var79 /* : MProperty */;
+var_mpropdef = p0;
+var_modelbuilder = p1;
+{
+{ /* Inline parser_nodes#APropdef#n_doc (self) on <self:APropdef> */
+var2 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:APropdef> */
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+var_ndoc = var;
+var3 = NULL;
+if (var_ndoc == NULL) {
+var4 = 0; /* is null */
+} else {
+var4 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_ndoc,var3) on <var_ndoc:nullable ADoc> */
+var_other = var3;
+{
+var8 = ((short int (*)(val*, val*))(var_ndoc->class->vft[COLOR_kernel__Object___61d_61d]))(var_ndoc, var_other) /* == on <var_ndoc:nullable ADoc(ADoc)>*/;
+var7 = var8;
+}
+var9 = !var7;
+var5 = var9;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
+}
+var4 = var5;
+}
+if (var4){
+{
+var10 = modelbuilder__ADoc__to_mdoc(var_ndoc);
+}
+var_mdoc = var10;
+{
+{ /* Inline mdoc#MEntity#mdoc= (var_mpropdef,var_mdoc) on <var_mpropdef:MPropDef> */
+var_mpropdef->attrs[COLOR_mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on <var_mpropdef:MPropDef> */
+RET_LABEL11:(void)0;
+}
+}
+{
+{ /* Inline mdoc#MDoc#original_mentity= (var_mdoc,var_mpropdef) on <var_mdoc:MDoc> */
+var_mdoc->attrs[COLOR_mdoc__MDoc___original_mentity].val = var_mpropdef; /* _original_mentity on <var_mdoc:MDoc> */
+RET_LABEL12:(void)0;
+}
+}
+} else {
+{
+var14 = model__MPropDef__is_intro(var_mpropdef);
+}
+var_ = var14;
+if (var14){
+{
+{ /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
+var17 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
+show_backtrace(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+{
+{ /* Inline model#MProperty#visibility (var15) on <var15:MProperty> */
+var20 = var15->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <var15:MProperty> */
+if (unlikely(var20 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630);
+show_backtrace(1);
+}
+var18 = var20;
+RET_LABEL19:(void)0;
+}
+}
+{
+var21 = model_base__Object__protected_visibility(self);
+}
+{
+var22 = kernel__Comparable___62d_61d(var18, var21);
+}
+var13 = var22;
+} else {
+var13 = var_;
+}
+if (var13){
+if (varonce) {
+var23 = varonce;
+} else {
+var24 = "missing-doc";
+var25 = 11;
+var26 = string__NativeString__to_s_with_length(var24, var25);
+var23 = var26;
+varonce = var23;
+}
+if (varonce27) {
+var28 = varonce27;
+} else {
+var29 = "Documentation warning: Undocumented property `";
+var30 = 46;
+var31 = string__NativeString__to_s_with_length(var29, var30);
+var28 = var31;
+varonce27 = var28;
+}
+{
+{ /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
+var34 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
+if (unlikely(var34 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
+show_backtrace(1);
+}
+var32 = var34;
+RET_LABEL33:(void)0;
+}
+}
+if (varonce35) {
+var36 = varonce35;
+} else {
+var37 = "`";
+var38 = 1;
+var39 = string__NativeString__to_s_with_length(var37, var38);
+var36 = var39;
+varonce35 = var36;
+}
+var40 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var40 = array_instance Array[Object] */
+var41 = 3;
+var42 = NEW_array__NativeArray(var41, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var42)->values[0] = (val*) var28;
+((struct instance_array__NativeArray*)var42)->values[1] = (val*) var32;
+((struct instance_array__NativeArray*)var42)->values[2] = (val*) var36;
+{
+((void (*)(val*, val*, long))(var40->class->vft[COLOR_array__Array__with_native]))(var40, var42, var41) /* with_native on <var40:Array[Object]>*/;
+}
+}
+{
+var43 = ((val* (*)(val*))(var40->class->vft[COLOR_string__Object__to_s]))(var40) /* to_s on <var40:Array[Object]>*/;
+}
+{
+modelbuilder__ModelBuilder__advice(var_modelbuilder, self, var23, var43); /* Direct call modelbuilder#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
+}
+} else {
+}
+}
+if (varonce44) {
+var45 = varonce44;
+} else {
+var46 = "deprecated";
+var47 = 10;
+var48 = string__NativeString__to_s_with_length(var46, var47);
+var45 = var48;
+varonce44 = var45;
+}
+{
+var49 = annotation__Prod__get_single_annotation(self, var45, var_modelbuilder);
+}
+var_at_deprecated = var49;
+var50 = NULL;
+if (var_at_deprecated == NULL) {
+var51 = 0; /* is null */
+} else {
+var51 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_at_deprecated,var50) on <var_at_deprecated:nullable AAnnotation> */
+var_other = var50;
+{
+var55 = ((short int (*)(val*, val*))(var_at_deprecated->class->vft[COLOR_kernel__Object___61d_61d]))(var_at_deprecated, var_other) /* == on <var_at_deprecated:nullable AAnnotation(AAnnotation)>*/;
+var54 = var55;
+}
+var56 = !var54;
+var52 = var56;
+goto RET_LABEL53;
+RET_LABEL53:(void)0;
+}
+var51 = var52;
+}
+if (var51){
+{
+var57 = model__MPropDef__is_intro(var_mpropdef);
+}
+var58 = !var57;
+if (var58){
+if (varonce59) {
+var60 = varonce59;
+} else {
+var61 = "Error: method redefinition cannot be deprecated.";
+var62 = 48;
+var63 = string__NativeString__to_s_with_length(var61, var62);
+var60 = var63;
+varonce59 = var60;
+}
+{
+modelbuilder__ModelBuilder__error(var_modelbuilder, self, var60); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+}
+} else {
+var64 = NEW_mdoc__MDeprecationInfo(&type_mdoc__MDeprecationInfo);
+{
+((void (*)(val*))(var64->class->vft[COLOR_kernel__Object__init]))(var64) /* init on <var64:MDeprecationInfo>*/;
+}
+var_info = var64;
+{
+{ /* Inline parser_nodes#AAnnotation#n_doc (var_at_deprecated) on <var_at_deprecated:nullable AAnnotation(AAnnotation)> */
+var67 = var_at_deprecated->attrs[COLOR_parser_nodes__AAnnotation___n_doc].val; /* _n_doc on <var_at_deprecated:nullable AAnnotation(AAnnotation)> */
+var65 = var67;
+RET_LABEL66:(void)0;
+}
+}
+var_ndoc = var65;
+var68 = NULL;
+if (var_ndoc == NULL) {
+var69 = 0; /* is null */
+} else {
+var69 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_ndoc,var68) on <var_ndoc:nullable ADoc> */
+var_other = var68;
+{
+var73 = ((short int (*)(val*, val*))(var_ndoc->class->vft[COLOR_kernel__Object___61d_61d]))(var_ndoc, var_other) /* == on <var_ndoc:nullable ADoc(ADoc)>*/;
+var72 = var73;
+}
+var74 = !var72;
+var70 = var74;
+goto RET_LABEL71;
+RET_LABEL71:(void)0;
+}
+var69 = var70;
+}
+if (var69){
+{
+var75 = modelbuilder__ADoc__to_mdoc(var_ndoc);
+}
+{
+{ /* Inline mdoc#MDeprecationInfo#mdoc= (var_info,var75) on <var_info:MDeprecationInfo> */
+var_info->attrs[COLOR_mdoc__MDeprecationInfo___mdoc].val = var75; /* _mdoc on <var_info:MDeprecationInfo> */
+RET_LABEL76:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
+var79 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
+if (unlikely(var79 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
+show_backtrace(1);
+}
+var77 = var79;
+RET_LABEL78:(void)0;
+}
+}
+{
+{ /* Inline mdoc#MEntity#deprecation= (var77,var_info) on <var77:MProperty> */
+var77->attrs[COLOR_mdoc__MEntity___deprecation].val = var_info; /* _deprecation on <var77:MProperty> */
+RET_LABEL80:(void)0;
+}
+}
+}
+} else {
+}
+RET_LABEL:;
+}
+/* method modelize_property#APropdef#set_doc for (self: Object, MPropDef, ModelBuilder) */
+void VIRTUAL_modelize_property__APropdef__set_doc(val* self, val* p0, val* p1) {
+modelize_property__APropdef__set_doc(self, p0, p1); /* Direct call modelize_property#APropdef#set_doc on <self:Object(APropdef)>*/
+RET_LABEL:;
+}
+/* method modelize_property#APropdef#check_redef_property_visibility for (self: APropdef, ModelBuilder, nullable AVisibility, MProperty) */
+void modelize_property__APropdef__check_redef_property_visibility(val* self, val* p0, val* p1, val* p2) {
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+val* var_nvisibility /* var nvisibility: nullable AVisibility */;
+val* var_mprop /* var mprop: MProperty */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+val* var7 /* : MVisibility */;
+val* var_mvisibility /* var mvisibility: MVisibility */;
+short int var8 /* : Bool */;
+val* var9 /* : MVisibility */;
+val* var11 /* : MVisibility */;
+short int var12 /* : Bool */;
+short int var13 /* : Bool */;
+val* var_other15 /* var other: nullable Object */;
+short int var16 /* : Bool */;
+short int var17 /* : Bool */;
+short int var18 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var19 /* : MVisibility */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+short int var23 /* : Bool */;
+short int var24 /* : Bool */;
+short int var25 /* : Bool */;
+static val* varonce;
+val* var26 /* : String */;
+char* var27 /* : NativeString */;
+long var28 /* : Int */;
+val* var29 /* : FlatString */;
+val* var30 /* : MVisibility */;
+val* var32 /* : MVisibility */;
+static val* varonce33;
+val* var34 /* : String */;
+char* var35 /* : NativeString */;
+long var36 /* : Int */;
+val* var37 /* : FlatString */;
+val* var38 /* : Array[Object] */;
+long var39 /* : Int */;
+val* var40 /* : NativeArray[Object] */;
+val* var41 /* : String */;
+var_modelbuilder = p0;
+var_nvisibility = p1;
+var_mprop = p2;
+var = NULL;
+if (var_nvisibility == NULL) {
+var1 = 1; /* is null */
+} else {
+var1 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_nvisibility,var) on <var_nvisibility:nullable AVisibility> */
+var_other = var;
+{
+{ /* Inline kernel#Object#is_same_instance (var_nvisibility,var_other) on <var_nvisibility:nullable AVisibility(AVisibility)> */
+var6 = var_nvisibility == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+}
+var2 = var4;