class MailboxImpl implements Mailbox {

	@Override
	public Optional<Runnable> tryTakeMail() throws MailboxStateException {
		final ReentrantLock lock = this.lock;
		lock.lock();
		try {
			return Optional.ofNullable(takeHeadInternal());
		} finally {
			lock.unlock();
		}
	}

	public  MailboxImpl();

}