+ void OC_icode_tools___ICode___dup_with_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+ struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ fun_t CREG[1];
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_icode_tools;
+ fra.me.line = 0;
+ fra.me.meth = LOCATE_icode_tools___ICode___dup_with;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 3;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.closure_ctx = closctx_param;
+ fra.me.closure_funs = CREG;
+ fra.me.REG[0] = p0;
+ CREG[0] = clos_fun0;
+ /* ./icode//icode_tools.nit:220 */
+ REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(false);
+ REGB0 = REGB1;
+ } else {
+ REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+ REGB0 = REGB1;
+ }
+ }
+ if (UNTAG_Bool(REGB0)) {
+ /* ./icode//icode_tools.nit:221 */
+ CALL_abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], NIT_NULL);
+ } else {
+ /* ./icode//icode_tools.nit:223 */
+ REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ nit_abort("Reciever is null", NULL, LOCATE_icode_tools, 223);
+ }
+ fra.me.REG[1] = CALL_icode_base___IRoutine___result(fra.me.REG[0])(fra.me.REG[0]);
+ /* ./icode//icode_tools.nit:224 */
+ REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(false);
+ REGB0 = REGB1;
+ } else {
+ REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+ REGB0 = REGB1;
+ }
+ }
+ REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+ if (UNTAG_Bool(REGB0)) {
+ fra.me.REG[2] = CALL_icode_tools___ICodeDupContext___dup_ireg(closctx->REG[1])(closctx->REG[1], fra.me.REG[1]);
+ fra.me.REG[1] = fra.me.REG[2];
+ }
+ /* ./icode//icode_tools.nit:225 */
+ REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ nit_abort("Reciever is null", NULL, LOCATE_icode_tools, 225);
+ }
+ fra.me.REG[2] = CALL_icode_base___IRoutine___params(fra.me.REG[0])(fra.me.REG[0]);
+ fra.me.REG[2] = CALL_icode_tools___ICodeDupContext___dup_iregs(closctx->REG[1])(closctx->REG[1], fra.me.REG[2]);
+ fra.me.REG[1] = NEW_IClosureDef_icode_base___IClosureDef___init(fra.me.REG[2], fra.me.REG[1]);
+ /* ./icode//icode_tools.nit:226 */
+ CALL_abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[1]);
+ /* ./icode//icode_tools.nit:227 */
+ REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ nit_abort("Reciever is null", NULL, LOCATE_icode_tools, 227);
+ }
+ fra.me.REG[0] = CALL_icode_base___IRoutine___body(fra.me.REG[0])(fra.me.REG[0]);
+ fra.me.REG[1] = CALL_icode_base___IRoutine___body(fra.me.REG[1])(fra.me.REG[1]);
+ CALL_icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1], fra.me.REG[1]);
+ }
+ stack_frame_head = fra.me.prev;
+ return;
+ }
+val_t icode_tools___ICode___inner_dup_with(val_t p0, val_t p1){
+ struct {struct stack_frame_t me;} fra;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_icode_tools;
+ fra.me.line = 239;
+ fra.me.meth = LOCATE_icode_tools___ICode___inner_dup_with;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 0;
+ /* ./icode//icode_tools.nit:239 */
+ nit_abort("Deferred method called", NULL, LOCATE_icode_tools, 239);
+ stack_frame_head = fra.me.prev;
+ return NIT_NULL;
+}
+val_t icode_tools___ISeq___inner_dup_with(val_t p0, val_t p1){