      If the given value was not known at the time of generating these protos then nothing will be added to the map.
      */
     public func decode<V: RawRepresentable>(into dictionary: inout [String: V]) throws where V.RawValue == UInt32 {
-        let (key, value) = try decode(
+        try decode(
+            into: &dictionary,
             decodeKey: { try decode(String.self) },
             decodeValue: { try decode(V.self) }
         )
-        dictionary[key] = value
     }
 
     /**

    public func decode<V: ProtoIntDecodable>(
        into dictionary: inout [String: V], valueEncoding: ProtoIntEncoding = .variable
    ) throws {
        let (key, value) = try decode(
            decodeKey: { try decode(String.self) },
            decodeValue: { try decode(V.self, encoding: valueEncoding) }
        )
        dictionary[key] = value
    }

    /** Decode a single key-value pair from a map of two integer types and add it to the given dictionary */
    public func decode<K: ProtoIntDecodable, V: ProtoIntDecodable>(
        into dictionary: inout [K: V], keyEncoding: ProtoIntEncoding = .variable, valueEncoding: ProtoIntEncoding = .variable
    ) throws {
        let (key, value) = try decode(
            decodeKey: { try decode(K.self, encoding: keyEncoding) },
            decodeValue: { try decode(V.self, encoding: valueEncoding) }
        )
        dictionary[key] = value
    }

    // MARK: - Public Methods - Unknown Fields

     Decode a single key-value pair from a map of values keyed by a `string`.
     */
    public func decode<V: ProtoDecodable>(into dictionary: inout [String: V]) throws {
        try decode(
            into: &dictionary,
            decodeKey: { try decode(String.self) },
            decodeValue: { try decode(V.self) }
        )
    }

    /**
