         let keys = Guise.filter(metafilter: metafilter)
         // We get back two keys, but they resolve disparate types.
         XCTAssertEqual(2, keys.count)
-        let humans = Guise.resolve(keys: keys) as [Human]
+        let humans = Guise.resolve(keys: keys.typed()) as [Human]
         // Because we are resolving Humans, not Dogs, Brian Griffin is skipped.
         XCTAssertEqual(1, humans.count)
     }

        XCTAssertEqual(brutus.name, "Brutus")
    }
    
    func testResolutionWithParameter() {
        let _ = Guise.register(container: Container.dogs) { (name: String) in Dog(name: name) }
        let dog = Guise.resolve(container: Container.dogs, parameter: "Brutus")! as Dog

        let _ = Guise.register(instance: Dog(name: "Fido") as Animal, name: "Fido", metadata: 10)
        let _ = Guise.register(instance: 7, metadata: 4)
        let metafilter: Metafilter<Int> = { $0 >= 3 }
        let keys = Guise.filter(type: Animal.self, metafilter: metafilter)
        let animals = Guise.resolve(keys: keys) as [Key<Animal>: Animal]
        // The registration of the integer 7 above is skipped, because it is not an Animal.
        XCTAssertEqual(2, animals.count)
    }
    
    func testResolutionByKey() {
        let key = Guise.register(instance: Dog(name: "Lucy"))
        XCTAssertNotNil(Guise.resolve(key: key) as Dog?)
    }
    
    func testResolutionsWithKeysOfIncorrectTypeAreSkipped() {
