+/* method typing#TypeVisitor#can_be_null for (self: TypeVisitor, MType): Bool */
+short int nit__typing___nit__typing__TypeVisitor___can_be_null(val* self, val* p0) {
+short int var /* : Bool */;
+val* var_mtype /* var mtype: MType */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+int cltype;
+int idtype;
+short int var_ /* var : Bool */;
+short int var3 /* : Bool */;
+int cltype4;
+int idtype5;
+short int var6 /* : Bool */;
+int cltype7;
+int idtype8;
+val* var9 /* : MType */;
+val* var_x /* var x: MType */;
+short int var10 /* : Bool */;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
+short int var_14 /* var : Bool */;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
+var_mtype = p0;
+/* <var_mtype:MType> isa MNullableType */
+cltype = type_nit__MNullableType.color;
+idtype = type_nit__MNullableType.id;
+if(cltype >= var_mtype->type->table_size) {
+var2 = 0;
+} else {
+var2 = var_mtype->type->type_table[cltype] == idtype;
+}
+var_ = var2;
+if (var2){
+var1 = var_;
+} else {
+/* <var_mtype:MType> isa MNullType */
+cltype4 = type_nit__MNullType.color;
+idtype5 = type_nit__MNullType.id;
+if(cltype4 >= var_mtype->type->table_size) {
+var3 = 0;
+} else {
+var3 = var_mtype->type->type_table[cltype4] == idtype5;
+}
+var1 = var3;
+}
+if (var1){
+var = 1;
+goto RET_LABEL;
+} else {
+}
+/* <var_mtype:MType> isa MFormalType */
+cltype7 = type_nit__MFormalType.color;
+idtype8 = type_nit__MFormalType.id;
+if(cltype7 >= var_mtype->type->table_size) {
+var6 = 0;
+} else {
+var6 = var_mtype->type->type_table[cltype7] == idtype8;
+}
+if (var6){
+{
+var9 = nit__typing___nit__typing__TypeVisitor___anchor_to(self, var_mtype);
+}
+var_x = var9;
+/* <var_x:MType> isa MNullableType */
+cltype12 = type_nit__MNullableType.color;
+idtype13 = type_nit__MNullableType.id;
+if(cltype12 >= var_x->type->table_size) {
+var11 = 0;
+} else {
+var11 = var_x->type->type_table[cltype12] == idtype13;
+}
+var_14 = var11;
+if (var11){
+var10 = var_14;
+} else {
+/* <var_x:MType> isa MNullType */
+cltype16 = type_nit__MNullType.color;
+idtype17 = type_nit__MNullType.id;
+if(cltype16 >= var_x->type->table_size) {
+var15 = 0;
+} else {
+var15 = var_x->type->type_table[cltype16] == idtype17;
+}
+var10 = var15;
+}
+if (var10){
+var = 1;
+goto RET_LABEL;
+} else {
+}
+} else {
+}
+var = 0;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method typing#TypeVisitor#check_can_be_null for (self: TypeVisitor, ANode, MType): Bool */
+short int nit__typing___nit__typing__TypeVisitor___check_can_be_null(val* self, val* p0, val* p1) {
+short int var /* : Bool */;
+val* var_anode /* var anode: ANode */;
+val* var_mtype /* var mtype: MType */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+int cltype;
+int idtype;
+val* var3 /* : MType */;
+val* var_res /* var res: MType */;
+val* var4 /* : ModelBuilder */;
+val* var6 /* : ModelBuilder */;
+static val* varonce;
+val* var7 /* : String */;
+char* var8 /* : NativeString */;
+val* var9 /* : FlatString */;
+val* var11 /* : NativeArray[String] */;
+static val* varonce10;
+static val* varonce12;
+val* var13 /* : String */;
+char* var14 /* : NativeString */;
+val* var15 /* : FlatString */;
+static val* varonce16;
+val* var17 /* : String */;
+char* var18 /* : NativeString */;
+val* var19 /* : FlatString */;
+static val* varonce20;
+val* var21 /* : String */;
+char* var22 /* : NativeString */;
+val* var23 /* : FlatString */;
+val* var24 /* : String */;
+val* var25 /* : String */;
+val* var26 /* : String */;
+val* var27 /* : ModelBuilder */;
+val* var29 /* : ModelBuilder */;
+static val* varonce30;
+val* var31 /* : String */;
+char* var32 /* : NativeString */;
+val* var33 /* : FlatString */;
+val* var35 /* : NativeArray[String] */;
+static val* varonce34;
+static val* varonce36;
+val* var37 /* : String */;
+char* var38 /* : NativeString */;
+val* var39 /* : FlatString */;
+static val* varonce40;
+val* var41 /* : String */;
+char* var42 /* : NativeString */;
+val* var43 /* : FlatString */;
+val* var44 /* : String */;
+val* var45 /* : String */;
+var_anode = p0;
+var_mtype = p1;
+{
+var1 = nit__typing___nit__typing__TypeVisitor___can_be_null(self, var_mtype);
+}
+if (var1){
+var = 1;
+goto RET_LABEL;
+} else {
+}
+/* <var_mtype:MType> isa MFormalType */
+cltype = type_nit__MFormalType.color;
+idtype = type_nit__MFormalType.id;
+if(cltype >= var_mtype->type->table_size) {
+var2 = 0;
+} else {
+var2 = var_mtype->type->type_table[cltype] == idtype;
+}
+if (var2){
+{
+var3 = nit__typing___nit__typing__TypeVisitor___anchor_to(self, var_mtype);
+}
+var_res = var3;
+{
+{ /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
+var6 = self->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+if (likely(varonce!=NULL)) {
+var7 = varonce;
+} else {
+var8 = "useless-null-test";
+var9 = standard___standard__NativeString___to_s_with_length(var8, 17l);
+var7 = var9;
+varonce = var7;
+}
+if (unlikely(varonce10==NULL)) {
+var11 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce12!=NULL)) {
+var13 = varonce12;
+} else {
+var14 = "Warning: expression is not null, since it is a `";
+var15 = standard___standard__NativeString___to_s_with_length(var14, 48l);
+var13 = var15;
+varonce12 = var13;
+}
+((struct instance_standard__NativeArray*)var11)->values[0]=var13;
+if (likely(varonce16!=NULL)) {
+var17 = varonce16;
+} else {
+var18 = ": ";
+var19 = standard___standard__NativeString___to_s_with_length(var18, 2l);
+var17 = var19;
+varonce16 = var17;
+}
+((struct instance_standard__NativeArray*)var11)->values[2]=var17;
+if (likely(varonce20!=NULL)) {
+var21 = varonce20;
+} else {
+var22 = "`.";
+var23 = standard___standard__NativeString___to_s_with_length(var22, 2l);
+var21 = var23;
+varonce20 = var21;
+}
+((struct instance_standard__NativeArray*)var11)->values[4]=var21;
+} else {
+var11 = varonce10;
+varonce10 = NULL;
+}
+{
+var24 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType(MFormalType)>*/
+}
+((struct instance_standard__NativeArray*)var11)->values[1]=var24;
+{
+var25 = ((val*(*)(val* self))(var_res->class->vft[COLOR_standard__string__Object__to_s]))(var_res); /* to_s on <var_res:MType>*/
+}
+((struct instance_standard__NativeArray*)var11)->values[3]=var25;
+{
+var26 = ((val*(*)(val* self))(var11->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var11); /* native_to_s on <var11:NativeArray[String]>*/
+}
+varonce10 = var11;
+{
+nit___nit__ModelBuilder___warning(var4, var_anode, var7, var26); /* Direct call modelbuilder_base#ModelBuilder#warning on <var4:ModelBuilder>*/
+}
+} else {
+{
+{ /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
+var29 = self->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
+if (unlikely(var29 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34);
+fatal_exit(1);
+}
+var27 = var29;
+RET_LABEL28:(void)0;
+}
+}
+if (likely(varonce30!=NULL)) {
+var31 = varonce30;
+} else {
+var32 = "useless-null-test";
+var33 = standard___standard__NativeString___to_s_with_length(var32, 17l);
+var31 = var33;
+varonce30 = var31;
+}
+if (unlikely(varonce34==NULL)) {
+var35 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce36!=NULL)) {
+var37 = varonce36;
+} else {
+var38 = "Warning: expression is not null, since it is a `";
+var39 = standard___standard__NativeString___to_s_with_length(var38, 48l);
+var37 = var39;
+varonce36 = var37;
+}
+((struct instance_standard__NativeArray*)var35)->values[0]=var37;
+if (likely(varonce40!=NULL)) {
+var41 = varonce40;
+} else {
+var42 = "`.";
+var43 = standard___standard__NativeString___to_s_with_length(var42, 2l);
+var41 = var43;
+varonce40 = var41;
+}
+((struct instance_standard__NativeArray*)var35)->values[2]=var41;
+} else {
+var35 = varonce34;
+varonce34 = NULL;
+}
+{
+var44 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
+}
+((struct instance_standard__NativeArray*)var35)->values[1]=var44;
+{
+var45 = ((val*(*)(val* self))(var35->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var35); /* native_to_s on <var35:NativeArray[String]>*/
+}
+varonce34 = var35;
+{
+nit___nit__ModelBuilder___warning(var27, var_anode, var31, var45); /* Direct call modelbuilder_base#ModelBuilder#warning on <var27:ModelBuilder>*/
+}
+}
+var = 0;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}