I’m sure that’s naive, but even without backedges, couldn’t you iterate through the entire method table and invalidate all methodinstance (? maybe I’m using the wrong word) that accept an X or that are inferred to return an X?
I think redefining structs is in a different category, most likely in the bucket “we don’t want to go there.”