<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def check_mailbox(self, selected: SelectedMailbox, *, wait_on: Event = None, housekeeping: bool = False) -> SelectedMailbox: """Checks for any updates in the mailbox. If ``wait_on`` is given, this method should block until either this event is signalled or the mailbox has detected updates. This method may be called continuously as long as ``wait_on`` is not signalled. If ``housekeeping`` is True, perform any house-keeping necessary by the mailbox backend, which may be a slower operation. See Also: `RFC 3501 6.1.2. <https://tools.ietf.org/html/rfc3501#section-6.1.2>`_, `RFC 3501 6.4.1. <https://tools.ietf.org/html/rfc3501#section-6.4.1>`_ `RFC 2177 <https://tools.ietf.org/html/rfc2177>`_ Args: selected: The selected mailbox session. wait_on: If given, block until this event signals. housekeeping: If True, the backend may perform additional housekeeping operations if necessary. Raises: :class:`~pymap.exceptions.MailboxNotFound` """

        ...