this is sufficiently crazy that we should just do it once: `P* whatev = static_cast<P*>(this)`. I don't even know what P* is!