Swift - o upcasting de um protocolo para outro de superprotocolo causa erro

No Swift, percebo que posso converter um objeto em conformidade com um protocolo chamado, digamosSubProtocol para outro protocolo chamadoSuperProtocol que é um super protocolo deSubProtocol. Mas não posso fazer o mesmo com uma matriz do protocolo. Aqui está o código de exemplo que eu executei no Playground:

protocol SuperProtocol {
}

protocol SubProtocol: SuperProtocol {
}

class MyObject: SubProtocol {
}

let value1: SubProtocol = MyObject()
let value2: SuperProtocol = value1 // No error here. Upcasting works.

let array1: [SubProtocol] = [MyObject()]
let array2: [SuperProtocol] = array1 // Error here "Cannot convert value of type '[SubProtocol]' to specified type '[SuperProtocol]'"

Isso parece contra-intuitivo e estou me perguntando por que não é permitido.

questionAnswers(2)

yourAnswerToTheQuestion