      */
     public mutating func encodeIdentifyingItems<ItemKeyType: protocol<RawRepresentable, CerealRepresentable, Hashable> where ItemKeyType.RawValue: CerealRepresentable>(items: [ItemKeyType: IdentifyingCerealType]?, forKey key: String) throws {
         guard let unwrapped = items else { return }
-        self.items[key] = try encodeIdentifyingItems(unwrapped)
+        self.items.append(.PairValue(.StringValue(key), try encodeIdentifyingItems(unwrapped)))
     }
 
     // MARK: Dictionaries of Arrays

    */
    public mutating func encode<ItemKeyType: protocol<CerealRepresentable, Hashable>, ItemValueType: CerealRepresentable>(items: [ItemKeyType: ItemValueType]?, forKey key: String) throws {
        guard let unwrapped = items else { return }
        self.items[key] = try encodeItems(unwrapped)
    }

    /**

     */
    public mutating func encode<ItemKeyType: protocol<RawRepresentable, CerealRepresentable, Hashable>, ItemValueType: protocol<RawRepresentable, CerealRepresentable> where ItemKeyType.RawValue: CerealRepresentable, ItemValueType.RawValue: CerealRepresentable>(items: [ItemKeyType: [ItemValueType]]?, forKey key: String) throws {
        guard let unwrapped = items else { return }
        self.items.append(.PairValue(.StringValue(key), try encodeItems(unwrapped)))
    }

    /**
