         self.init(name: Name.default, container: Name.default)
     }
     
-    public init?(_ key: AnyKey) {
+    public init?(_ key: Keyed) {
         if key.type != String(reflecting: T.self) { return nil }
         self.type = key.type
         self.name = key.name

     
    */
    public static func register<P, T>(keys: Set<Key<T>>, metadata: Any = (), cached: Bool = false, resolution: @escaping Resolution<P, T>) -> Set<Key<T>> {
        return Set(keys.map{ register(key: $0, metadata: metadata, cached: cached, resolution: resolution) })
    }
    
    /**

    public init<T, C: Hashable>(type: T.Type, container: C) {
        self.init(type: type, name: Name.default, container: container)
    }
    
    public init<T>(type: T.Type) {
        self.init(type: type, name: Name.default, container: Name.default)
    }
}

extension Sequence where Iterator.Element == AnyKey {
    public func typed<T>() -> Set<Key<T>> {
        return Set<Key<T>>(flatMap{ Key($0) })
    }
