     // MARK: Filter By Type
     
     public static func filter<T>(type: T.Type) -> Set<Key<T>> {
-        return filter(type: nil, name: nil, container: nil, metathunk: nil)
+        return filter(name: nil, container: nil, metathunk: nil)
     }
     
     public static func filter<T, M>(type: T.Type, metafilter: @escaping Metafilter<M>) -> Set<Key<T>> {
-        return filter(type: nil, name: nil, container: nil, metathunk: metathunk(metafilter))
+        return filter(name: nil, container: nil, metathunk: metathunk(metafilter))
     }
     
     public static func filter<T, M: Equatable>(type: T.Type, metadata: M) -> Set<Key<T>> {

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

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