Another, simpler example is Swift's Result type, which has always effectively had typed errors because it's generic over the "Failure" type. However, any interaction between Result and errors in the language (e.g., an actual throw or do..catch) would have to erase to "any Error". Now, we can express the relationship between the "Failure" type and error handling, allowing one to smoothly go between throw/do..catch and Result: https://github.com/apple/swift/pull/70907