+/* <var_mtype:nullable MType(MType)> isa MNullableType */
+cltype26 = type_model__MNullableType.color;
+idtype27 = type_model__MNullableType.id;
+if(cltype26 >= var_mtype->type->table_size) {
+var25 = 0;
+} else {
+var25 = var_mtype->type->type_table[cltype26] == idtype27;
+}
+var28 = !var25;
+if (var28){
+{
+var29 = typing__TypeVisitor__anchor_to(self, var_mtype);
+}
+/* <var29:MType> isa MNullableType */
+cltype31 = type_model__MNullableType.color;
+idtype32 = type_model__MNullableType.id;
+if(cltype31 >= var29->type->table_size) {
+var30 = 0;
+} else {
+var30 = var29->type->type_table[cltype31] == idtype32;
+}
+var33 = !var30;
+if (var33){
+{
+{ /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
+var36 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
+if (unlikely(var36 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
+show_backtrace(1);
+}
+var34 = var36;
+RET_LABEL35:(void)0;
+}
+}
+if (varonce) {
+var37 = varonce;
+} else {
+var38 = "useless-null-test";
+var39 = 17;
+var40 = string__NativeString__to_s_with_length(var38, var39);
+var37 = var40;
+varonce = var37;
+}
+if (varonce41) {
+var42 = varonce41;
+} else {
+var43 = "Warning: expression is not null, since it is a `";
+var44 = 48;
+var45 = string__NativeString__to_s_with_length(var43, var44);
+var42 = var45;
+varonce41 = var42;
+}
+if (varonce46) {
+var47 = varonce46;
+} else {
+var48 = "`.";
+var49 = 2;
+var50 = string__NativeString__to_s_with_length(var48, var49);
+var47 = var50;
+varonce46 = var47;
+}
+var51 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var51 = array_instance Array[Object] */
+var52 = 3;
+var53 = NEW_array__NativeArray(var52, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var53)->values[0] = (val*) var42;
+((struct instance_array__NativeArray*)var53)->values[1] = (val*) var_mtype;
+((struct instance_array__NativeArray*)var53)->values[2] = (val*) var47;
+{
+((void (*)(val*, val*, long))(var51->class->vft[COLOR_array__Array__with_native]))(var51, var53, var52) /* with_native on <var51:Array[Object]>*/;
+}
+}
+{
+var54 = ((val* (*)(val*))(var51->class->vft[COLOR_string__Object__to_s]))(var51) /* to_s on <var51:Array[Object]>*/;
+}
+{
+modelbuilder__ModelBuilder__warning(var34, var_anode, var37, var54); /* Direct call modelbuilder#ModelBuilder#warning on <var34:ModelBuilder>*/
+}
+} else {
+}
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline parser_nodes#ASendExpr#n_expr (var_anode) on <var_anode:ABinopExpr> */
+var57 = var_anode->attrs[COLOR_parser_nodes__ASendExpr___n_expr].val; /* _n_expr on <var_anode:ABinopExpr> */
+if (unlikely(var57 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1466);
+show_backtrace(1);
+}
+var55 = var57;
+RET_LABEL56:(void)0;
+}
+}
+{
+var58 = ((val* (*)(val*))(var55->class->vft[COLOR_typing__AExpr__its_variable]))(var55) /* its_variable on <var55:AExpr>*/;
+}
+var_variable = var58;
+var59 = NULL;
+if (var_variable == NULL) {
+var60 = 1; /* is null */
+} else {
+var60 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_variable,var59) on <var_variable:nullable Variable> */
+var_other = var59;
+{
+{ /* Inline kernel#Object#is_same_instance (var_variable,var_other) on <var_variable:nullable Variable(Variable)> */
+var65 = var_variable == var_other;
+var63 = var65;
+goto RET_LABEL64;
+RET_LABEL64:(void)0;
+}
+}
+var61 = var63;
+goto RET_LABEL62;
+RET_LABEL62:(void)0;
+}
+var60 = var61;
+}
+if (var60){
+goto RET_LABEL;
+} else {
+}
+/* <var_anode:ABinopExpr> isa AEqExpr */
+cltype67 = type_parser_nodes__AEqExpr.color;
+idtype68 = type_parser_nodes__AEqExpr.id;
+if(cltype67 >= var_anode->type->table_size) {
+var66 = 0;
+} else {
+var66 = var_anode->type->type_table[cltype67] == idtype68;
+}
+if (var66){
+{
+{ /* Inline flow#AExpr#after_flow_context (var_anode) on <var_anode:ABinopExpr(AEqExpr)> */
+var71 = var_anode->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_anode:ABinopExpr(AEqExpr)> */
+var69 = var71;
+RET_LABEL70:(void)0;
+}
+}
+if (var69 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 222);
+show_backtrace(1);
+} else {
+{ /* Inline flow#FlowContext#when_true (var69) on <var69:nullable FlowContext> */
+if (unlikely(var69 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225);
+show_backtrace(1);
+}
+var74 = var69->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var69:nullable FlowContext> */
+if (unlikely(var74 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
+PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225);
+show_backtrace(1);
+}
+var72 = var74;
+RET_LABEL73:(void)0;
+}
+}
+{
+typing__FlowContext__set_var(var72, var_variable, var_mtype2); /* Direct call typing#FlowContext#set_var on <var72:FlowContext>*/
+}
+{
+{ /* Inline flow#AExpr#after_flow_context (var_anode) on <var_anode:ABinopExpr(AEqExpr)> */
+var77 = var_anode->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_anode:ABinopExpr(AEqExpr)> */
+var75 = var77;
+RET_LABEL76:(void)0;
+}
+}
+if (var75 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 223);
+show_backtrace(1);
+} else {
+{ /* Inline flow#FlowContext#when_false (var75) on <var75:nullable FlowContext> */
+if (unlikely(var75 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228);
+show_backtrace(1);
+}
+var80 = var75->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var75:nullable FlowContext> */
+if (unlikely(var80 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
+PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228);
+show_backtrace(1);
+}
+var78 = var80;
+RET_LABEL79:(void)0;
+}
+}
+{
+{ /* Inline model#MNullableType#mtype (var_mtype) on <var_mtype:nullable MType(MNullableType)> */
+var83 = var_mtype->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_mtype:nullable MType(MNullableType)> */
+if (unlikely(var83 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
+show_backtrace(1);
+}
+var81 = var83;
+RET_LABEL82:(void)0;
+}
+}
+{
+typing__FlowContext__set_var(var78, var_variable, var81); /* Direct call typing#FlowContext#set_var on <var78:FlowContext>*/
+}
+} else {
+/* <var_anode:ABinopExpr> isa ANeExpr */
+cltype85 = type_parser_nodes__ANeExpr.color;
+idtype86 = type_parser_nodes__ANeExpr.id;
+if(cltype85 >= var_anode->type->table_size) {
+var84 = 0;
+} else {
+var84 = var_anode->type->type_table[cltype85] == idtype86;
+}
+if (var84){
+{
+{ /* Inline flow#AExpr#after_flow_context (var_anode) on <var_anode:ABinopExpr(ANeExpr)> */
+var89 = var_anode->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_anode:ABinopExpr(ANeExpr)> */
+var87 = var89;
+RET_LABEL88:(void)0;
+}
+}
+if (var87 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 225);
+show_backtrace(1);
+} else {
+{ /* Inline flow#FlowContext#when_false (var87) on <var87:nullable FlowContext> */
+if (unlikely(var87 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228);
+show_backtrace(1);
+}
+var92 = var87->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var87:nullable FlowContext> */
+if (unlikely(var92 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
+PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228);
+show_backtrace(1);
+}
+var90 = var92;
+RET_LABEL91:(void)0;
+}
+}
+{
+typing__FlowContext__set_var(var90, var_variable, var_mtype2); /* Direct call typing#FlowContext#set_var on <var90:FlowContext>*/
+}
+{
+{ /* Inline flow#AExpr#after_flow_context (var_anode) on <var_anode:ABinopExpr(ANeExpr)> */
+var95 = var_anode->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_anode:ABinopExpr(ANeExpr)> */
+var93 = var95;
+RET_LABEL94:(void)0;
+}
+}
+if (var93 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 226);
+show_backtrace(1);
+} else {
+{ /* Inline flow#FlowContext#when_true (var93) on <var93:nullable FlowContext> */
+if (unlikely(var93 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225);
+show_backtrace(1);
+}
+var98 = var93->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var93:nullable FlowContext> */
+if (unlikely(var98 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
+PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225);
+show_backtrace(1);
+}
+var96 = var98;
+RET_LABEL97:(void)0;
+}
+}
+{
+{ /* Inline model#MNullableType#mtype (var_mtype) on <var_mtype:nullable MType(MNullableType)> */
+var101 = var_mtype->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_mtype:nullable MType(MNullableType)> */
+if (unlikely(var101 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
+show_backtrace(1);
+}
+var99 = var101;
+RET_LABEL100:(void)0;
+}
+}
+{
+typing__FlowContext__set_var(var96, var_variable, var99); /* Direct call typing#FlowContext#set_var on <var96:FlowContext>*/
+}
+} else {
+PRINT_ERROR("Runtime error: %s", "Aborted");
+PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 228);
+show_backtrace(1);
+}
+}
+RET_LABEL:;
+}
+/* method typing#TypeVisitor#null_test for (self: Object, ABinopExpr) */
+void VIRTUAL_typing__TypeVisitor__null_test(val* self, val* p0) {
+typing__TypeVisitor__null_test(self, p0); /* Direct call typing#TypeVisitor#null_test on <self:Object(TypeVisitor)>*/
+RET_LABEL:;
+}
+/* method typing#TypeVisitor#try_get_mproperty_by_name2 for (self: TypeVisitor, ANode, MType, String): nullable MProperty */
+val* typing__TypeVisitor__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
+val* var /* : nullable MProperty */;
+val* var_anode /* var anode: ANode */;
+val* var_mtype /* var mtype: MType */;
+val* var_name /* var name: String */;
+val* var1 /* : ModelBuilder */;
+val* var3 /* : ModelBuilder */;
+val* var4 /* : MModule */;
+val* var6 /* : MModule */;
+val* var7 /* : nullable MProperty */;
+var_anode = p0;
+var_mtype = p1;
+var_name = p2;
+{
+{ /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
+var3 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
+var6 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
+show_backtrace(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+var7 = modelbuilder__ModelBuilder__try_get_mproperty_by_name2(var1, var_anode, var4, var_mtype, var_name);
+}
+var = var7;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method typing#TypeVisitor#try_get_mproperty_by_name2 for (self: Object, ANode, MType, String): nullable MProperty */
+val* VIRTUAL_typing__TypeVisitor__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
+val* var /* : nullable MProperty */;
+val* var1 /* : nullable MProperty */;
+var1 = typing__TypeVisitor__try_get_mproperty_by_name2(self, p0, p1, p2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method typing#TypeVisitor#resolve_mtype for (self: TypeVisitor, AType): nullable MType */
+val* typing__TypeVisitor__resolve_mtype(val* self, val* p0) {
+val* var /* : nullable MType */;
+val* var_node /* var node: AType */;
+val* var1 /* : ModelBuilder */;
+val* var3 /* : ModelBuilder */;
+val* var4 /* : MModule */;
+val* var6 /* : MModule */;
+val* var7 /* : nullable MClassDef */;
+val* var9 /* : nullable MClassDef */;
+val* var10 /* : nullable MType */;
+var_node = p0;
+{
+{ /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
+var3 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
+var6 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
+show_backtrace(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline typing#TypeVisitor#mclassdef (self) on <self:TypeVisitor> */
+var9 = self->attrs[COLOR_typing__TypeVisitor___mclassdef].val; /* _mclassdef on <self:TypeVisitor> */
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+{
+var10 = modelize_class__ModelBuilder__resolve_mtype(var1, var4, var7, var_node);
+}
+var = var10;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method typing#TypeVisitor#resolve_mtype for (self: Object, AType): nullable MType */
+val* VIRTUAL_typing__TypeVisitor__resolve_mtype(val* self, val* p0) {
+val* var /* : nullable MType */;
+val* var1 /* : nullable MType */;
+var1 = typing__TypeVisitor__resolve_mtype(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method typing#TypeVisitor#try_get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
+val* typing__TypeVisitor__try_get_mclass(val* self, val* p0, val* p1) {
+val* var /* : nullable MClass */;
+val* var_node /* var node: ANode */;
+val* var_name /* var name: String */;
+val* var1 /* : ModelBuilder */;
+val* var3 /* : ModelBuilder */;
+val* var4 /* : MModule */;
+val* var6 /* : MModule */;
+val* var7 /* : nullable MClass */;
+val* var_mclass /* var mclass: nullable MClass */;
+var_node = p0;
+var_name = p1;
+{
+{ /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
+var3 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
+var6 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
+show_backtrace(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+var7 = modelbuilder__ModelBuilder__try_get_mclass_by_name(var1, var_node, var4, var_name);
+}
+var_mclass = var7;
+var = var_mclass;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method typing#TypeVisitor#try_get_mclass for (self: Object, ANode, String): nullable MClass */
+val* VIRTUAL_typing__TypeVisitor__try_get_mclass(val* self, val* p0, val* p1) {
+val* var /* : nullable MClass */;
+val* var1 /* : nullable MClass */;