Conforme al protocolo MK Anotación a través del protocolo personalizado

Quiero obtener 2 o más tipos de objetos diferentes en un mapa fácilmente. Swift 2.0, quería usar Protocolos.

Creé un protocolo que estos objetos también deben cumplir. Supongo que ahora cualquier elemento que se ajuste a PinProtocol es esencialmente lo mismo que una anotación MK ... ¡solo más!

protocol PinProtocol: MKAnnotation {
    // stuff
}

Tengo 2 clases, personal y clientes

Ambos se ajustan a PinProtocol (que también debe ajustarse a MKAnnotation)

Sé que esto funciona como si configurara mi clase como tal,

class Client: NSObject, PinProtocol {
     //var coordinate:CLLocationCoordinate2D // Leave out get doesn't conform to protocol warning as expected
}

Entonces, esto me dice que PinProtocol funciona como se esperaba, ya que los elementos que deben adherirse al PinProtocol también se ajustan al protocolo MKAnnotation. Porque coord: CLLocationCoordinate2D, es requerido por MKAnnotation.

Entonces, ¿por qué me sale este problema con

let staffAndClients = [PinProtocol]()

mapView.addAnnotations(staffAndClients) // not allowed!
//mapView.addAnnotations(pins as! [MKAnnotation]) // also not allowed

El error es, no se puede convertir el valor de tipo [PinProtocol] a argumento esperado [MKAnnotation]

¿No se ajusta PinProtocol a MKAnnotation, por lo que debería funcionar?

Pero hacer esto funciona bien

let staff = [Staff]()
mapView.addAnnotations(staff) // no problem
let clients = [Client]()
mapView.addAnnotations(clients) // no problem

Puedo solucionar el problema usando AnyObject, pero ¿por qué no puedo usar PinProtocol? Lo cual me parece más limpio y la idea de las extensiones de protocolo.

Gracias por cualquier ayuda.

Addit ...

La forma en que lo estoy solucionando para aquellos que enfrentan un problema similar es

var pins = [AnyObject]()
mapView.addAnnotations(pins as! [MKAnnotation])

Respuestas a la pregunta(2)

Su respuesta a la pregunta