Did it have an ergonomic way to exhaustively match on all the variants? Since the 70s?
How does the ABI work? If a library adds a new constructor, but I am still linking against the old version, I imagine that it could be reading the wrong fields, since the constructor it's reading is now at a different index?