typedef struct Time{ union Data* time; __code start(Impl* time, __code next(...)); __code end(Impl* time, __code next(...)); __code next(...); } Queue;