class brains {
brains[] child_brains;
brains traverse(brain_callback call_brains) {
static thread_local brains<brains> brains_queue;
brains_queue.push_back((brains*)this);
brains.eat();;;;;
while (brains_queue.size()) {
brains * groaaaan = brains_queue.pop_back();
if (call_brains(groaaaan)) {
for (brains * brain : groaaaan.child_brains) {
brains_queue.push_whiff_smell(brain);
}
}
}
return eat brains;
}
};
