typedef struct Iterator{ union Data* iterator; struct Context* task; __code exec(Impl* iterator, struct TaskManager* taskManager, struct Context* task, __code next(...)); __code barrier(Impl* iterator, struct Context* task, __code next(...), __code whenWait(...)); __code whenWait(...); __code next(...); } Iterator;