+if (unlikely(!var7)) {
+var_class_name11 = var_from == NULL ? "null" : var_from->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name11);
+PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 22);
+show_backtrace(1);
+}
+self->attrs[COLOR_range__Range___first].val = var_from; /* _first on <self:Range[Discrete]> */
+RET_LABEL6:(void)0;
+}
+}
+var12 = 1;
+{
+var13 = ((val* (*)(val*, long))(var_to->class->vft[COLOR_kernel__Discrete__predecessor]))(var_to, var12) /* predecessor on <var_to:Discrete>*/;
+}
+/* <var13:Discrete> isa Range#0 */
+type_struct17 = self->type->resolution_table->types[COLOR_range__Range_FT0];
+cltype15 = type_struct17->color;
+idtype16 = type_struct17->id;
+if(cltype15 >= var13->type->table_size) {
+var14 = 0;
+} else {
+var14 = var13->type->type_table[cltype15] == idtype16;
+}
+if (unlikely(!var14)) {
+var_class_name18 = var13 == NULL ? "null" : var13->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 71);
+show_backtrace(1);
+}
+{
+{ /* Inline range#Range#last= (self,var13) on <self:Range[Discrete]> */
+/* Covariant cast for argument 0 (last) <var13:Discrete> isa Range#0 */
+/* <var13:Discrete> isa Range#0 */
+type_struct23 = self->type->resolution_table->types[COLOR_range__Range_FT0];
+cltype21 = type_struct23->color;
+idtype22 = type_struct23->id;
+if(cltype21 >= var13->type->table_size) {
+var20 = 0;
+} else {
+var20 = var13->type->type_table[cltype21] == idtype22;
+}
+if (unlikely(!var20)) {
+var_class_name24 = var13 == NULL ? "null" : var13->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name24);
+PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 24);
+show_backtrace(1);
+}
+self->attrs[COLOR_range__Range___last].val = var13; /* _last on <self:Range[Discrete]> */
+RET_LABEL19:(void)0;
+}
+}
+{
+{ /* Inline range#Range#after= (self,var_to) on <self:Range[Discrete]> */
+/* Covariant cast for argument 0 (after) <var_to:Discrete> isa Range#0 */
+/* <var_to:Discrete> isa Range#0 */
+type_struct29 = self->type->resolution_table->types[COLOR_range__Range_FT0];
+cltype27 = type_struct29->color;
+idtype28 = type_struct29->id;
+if(cltype27 >= var_to->type->table_size) {
+var26 = 0;
+} else {
+var26 = var_to->type->type_table[cltype27] == idtype28;
+}
+if (unlikely(!var26)) {
+var_class_name30 = var_to == NULL ? "null" : var_to->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Range#0", var_class_name30);
+PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/range.nit", 27);