<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def wait_for_at_least(self, new_state):
 """ Wait for a state to be entered which is greater than or equal to `new_state` and return. """

        if not (self._state < new_state):
            return

        fut = asyncio.Future(loop=self.loop)
        self._least_waiters.append((new_state, fut))
        yield from fut