SV* set_parent(SV* self, SV* parent) { Node* me = (Node*)SvIV(SvRV(self)); SvREFCNT_inc(parent); if (me->parent) SvREFCNT_dec(me->parent); me->parent = parent; SvREFCNT_inc(self); return self; }