for (auto &it : self->locals) ast_delete(it);
for (auto &it : self->collect) ast_delete(it);
ast_expression_delete((ast_expression*)self);
for (auto &it : self->locals) ast_delete(it);
for (auto &it : self->collect) ast_delete(it);
ast_expression_delete((ast_expression*)self);