Also, there's a lot of manual walking, rather than just deferring to `visit::walk_item`?