Classe Pure Swift em conformidade com protocolo com método estático - problema com upcasting

Dado que temos um protocolo Swift com umstatic método:

protocol Creatable: class {
    static func create() -> AnyObject
}

e uma classe Swift pura, em conformidade com o protocolo:

class Foo : Creatable {
    static func create() -> AnyObject {
        return Foo() as AnyObject
    }
}

Mais tarde, quando alguém tenta fazer uso desse protocolo, operando no tipoCreatable por exemplo.:

var f : Creatable = Foo.self
f.create()

O compilador reclama com o seguinte:

error: type 'Foo.Type' does not conform to protocol 'Creatable'

A questão é: essa é uma limitação do Swift ou estou usando os protocolos e o método static / class da maneira errada.

O equivalente ao Objetivo-C seria algo como:

Class someClass = [Foo class];
if ([someClass conformsToProtocol:@protocol(Creatable)]) {
    [(Class <Foo>)someClass create];
}

questionAnswers(2)

yourAnswerToTheQuestion