     /**
      Helper method for filtering.
      */
-    private static func exists(type: String?, name: AnyHashable?, container: AnyHashable?, metafilter: Metafilter<Any>? = nil) -> Bool {
+    private static func exists(type: String?, name: AnyHashable?, container: AnyHashable?, metafilter: Metathunk? = nil) -> Bool {
         return lock.read {
             for (key, dependency) in registrations {
                 if let type = type, type != key.type { continue }

    }
    
    /**
     Returns true if there are any keys registered with the given type in any container, independent of name.
    */
    public static func exists<T, M>(type: T.Type, metafilter: @escaping Metafilter<M>) -> Bool {
        return exists(type: String(reflecting: type), name: nil, container: nil, metafilter: metathunk(metafilter))

        return exists(type: String(reflecting: type), name: nil, container: nil, metafilter: nil)
    }
    
    /**
     Returns true if any registrations exist matching the given metafilter, regardless of type, name, or container.
    */
    public static func exists<M>(metafilter: @escaping Metafilter<M>) -> Bool {
        return exists(type: nil, name: nil, container: nil, metafilter: metathunk(metafilter))
    }
