mind-bending decorator generator coroutine example