A common POP pitfall: a protocol requirement and a same-named protocol-extension default can disagree. Given the code below, what prints?
protocol Doc { func describe() -> String }
extension Doc {
func describe() -> String { "default" }
func extra() -> String { "B" }
}
struct Memo: Doc {
func describe() -> String { "A" }
func extra() -> String { "X" }
}
let d: Doc = Memo()
print(d.describe())
print(d.extra())