     var container: AnyHashable { get }
 }
 
+public protocol TypedKey: Keyed {}
+
 /**
  A type-erasing unique key under which to register a block in Guise.
 */

    return true
}

public struct Key<T>: Keyed, Hashable {
    public let type: String
    public let name: AnyHashable
    public let container: AnyHashable

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