Compare dispatch of a default method implementation provided in a protocol extension that is NOT a protocol requirement, when called on an existential. What is the key difference from a true requirement?
protocol P { func required() }
extension P {
func required() { print("req-default") }
func extra() { print("extra-default") }
}
struct S: P {
func required() { print("req-S") }
func extra() { print("extra-S") }
}
let p: P = S()
p.required()
p.extra()