Can you pull `self` out into a well-typed temporary, so we get compiler checking of protocol methods?