 
     func testDecodingArray_withUnencodedKey_returnsNil() {
         do {
-            let subject = try CerealDecoder(encodedString: "k,2:hi:a,25:s,3:the:s,5:brown:s,3:fox")
+            let subject = try CerealDecoder(encodedBytes: [11,67,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,9,1,2,0,0,0,0,0,0,0,104,105,10,38,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,1,3,0,0,0,0,0,0,0,116,104,101,1,5,0,0,0,0,0,0,0,98,114,111,119,110,1,3,0,0,0,0,0,0,0,102,111,120])
             let elements: [String]? = try subject.decode("bye")
             XCTAssertNil(elements)
         } catch let error {

    func testDecoding_withArrayOfDictionary_ofIntToProtocolIdentifyingCereal() {
        Cereal.register(TestIdentifyingCerealType.self)
        do {
            let subject = try CerealDecoder(encodedString: "k,2:hi:a,145:m,67:i,1:0:p,22:4:tict:k,3:foo:s,3:bar:i,1:2:p,22:4:tict:k,3:foo:s,3:baz:m,67:i,1:4:p,22:4:tict:k,3:foo:s,3:foo:i,1:6:p,22:4:tict:k,3:foo:s,3:oof")
            if let elements: [[Int: IdentifyingCerealType]] = try subject.decodeIdentifyingCerealArray("hi") {
                guard let first = elements.first as? [Int: Fooable] else {
                    XCTFail("Array wasn't decoded correctly")


    func testDecoding_withArrayOfDictionary_ofCerealTypeToIdentifyingCereal() {
        do {
            let subject = try CerealDecoder(encodedBytes: [11,203,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,9,1,2,0,0,0,0,0,0,0,104,105,10,174,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,10,198,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,9,11,25,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,9,1,3,0,0,0,0,0,0,0,102,111,111,1,3,0,0,0,0,0,0,0,98,97,122,12,1,5,0,0,0,0,0,0,0,77,121,66,97,114,25,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,9,1,3,0,0,0,0,0,0,0,98,97,114,1,3,0,0,0,0,0,0,0,98,97,122,9,11,25,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,9,1,3,0,0,0,0,0,0,0,102,111,111,1,3,0,0,0,0,0,0,0,98,97,114,12,1,5,0,0,0,0,0,0,0,77,121,66,97,114,25,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,9,1,3,0,0,0,0,0,0,0,98,97,114,1,3,0,0,0,0,0,0,0,98,97,114,10,198,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,9,11,25,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,9,1,3,0,0,0,0,0,0,0,102,111,111,1,3,0,0,0,0,0,0,0,111,111,102,12,1,5,0,0,0,0,0,0,0,77,121,66,97,114,25,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,9,1,3,0,0,0,0,0,0,0,98,97,114,1,3,0,0,0,0,0,0,0,111,111,102,9,11,25,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,9,1,3,0,0,0,0,0,0,0,102,111,111,1,3,0,0,0,0,0,0,0,102,111,111,12,1,5,0,0,0,0,0,0,0,77,121,66,97,114,25,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,9,1,3,0,0,0,0,0,0,0,98,97,114,1,3,0,0,0,0,0,0,0,102,111,111])
            if let elements: [[TestCerealType: MyBar]] = try subject.decodeCerealPair("hi") {
                guard let first: [TestCerealType: MyBar] = elements.first else {
                    XCTFail("Array wasn't decoded correctly")
