     // MARK: Filter By Type, Name, & Container
     
     public static func filter<T, N: Hashable, C: Hashable>(type: T.Type, name: N, container: C) -> Key<T>? {
-        return filter(type: nil, name: name, container: container, metathunk: nil).first
+        return filter(name: name, container: container, metathunk: nil).first
     }
     
     public static func filter<T, N: Hashable, C: Hashable, M>(type: T.Type, name: N, container: C, metafilter: @escaping Metafilter<M>) -> Key<T>? {
-        return filter(type: nil, name: name, container: container, metathunk: metathunk(metafilter)).first
+        return filter(name: name, container: container, metathunk: metathunk(metafilter)).first
     }
     
     public static func filter<T, N: Hashable, C: Hashable, M: Equatable>(type: T.Type, name: N, container: C, metadata: M) -> Key<T>? {

    // MARK: Filter By Container
    
    public static func filter<C: Hashable>(container: C) -> Set<AnyKey> {
        return filter(type: nil, name: nil, container: container, metathunk: nil)
    }
    
    public static func filter<C: Hashable, M>(container: C, metafilter: @escaping Metafilter<M>) -> Set<AnyKey> {
        return filter(type: nil, name: nil, container: container, metathunk: metathunk(metafilter))
    }
    
    public static func filter<C: Hashable, M: Equatable>(container: C, metadata: M) -> Set<AnyKey> {

extension Guise {
    
    /// All roads lead here
    private static func filter<K: Keyed & Hashable>(name: AnyHashable?, container: AnyHashable?, metathunk: Metathunk?) -> Set<K> {
        let keymap: (Dictionary<AnyKey, Dependency>.Element) -> Dictionary<K, Dependency>.Element? = {
            /*
             Filtering by type occurs when `K` is `Key<T>`. For instance, if `K` is `Key<String>` but `$0.key.type` is
             `Swift.Int`, the initializer will fail because of the type incompatibility. This is why no explicit `type`
             parameter for this method is needed.
             
             When *not* filtering by type, `K` should be `AnyKey`.
             */
            guard let key = K($0.key) else { return nil }
            if let name = name, name != key.name { return nil }
            if let container = container, container != key.container { return nil }
            return (key: key, value: $0.value)
