     /** Cached instance, if any. */
     private var instance: Any?
     /** Metadata */
-    internal let metadata: Metadata
-    
-    init<P, T>(metadata: Metadata, cached: Bool, registration: @escaping Registration<P, T>) {
+    internal let metadata: Any
+    
+    init<P, T>(metadata: Any, cached: Bool, registration: @escaping Registration<P, T>) {
         self.metadata = metadata
         self.cached = cached
         self.registration = { param in registration(param as! P) }

         - instance: The instance to register.
         - container: The container in which to register the block.
    */
    public static func register<T, C: Hashable>(instance: T, container: C, metadata: Metadata = [:]) -> Key {
        return register(key: Key(type: T.self, name: Name.default, container: container), metadata: metadata, cached: true) { instance }
    }
    

         - cached: Whether or not to cache the result of the registration block.
         - registration: The block to register with Guise.
    */
    public static func register<P, T>(metadata: Any = (), cached: Bool = false, registration: @escaping Registration<P, T>) -> Key {
        return register(key: Key(type: T.self, name: Name.default, container: Name.default), metadata: metadata, cached: cached, registration: registration)
    }
    
