This is skipping the `self` arg right?  How will this interact with generalised `self`? I.e. will we want to be recording `self: Rc<Self>` vs. `self: Box<Self>` etc.?