     }
 
     public func optionalUnarchivedValue<T: JSONCoding>(in json: Any, _ unarchiver: JSONUnarchiving) throws -> T? {
-        return try optionalAnyValue(in: json, unarchiver, transform: unarchiver.unarchived(with:))
+        return try optionalAnyValue(in: json, unarchiver) {
+            try unarchiver.unarchived(with: $0)
+        }
     }
 
     public func optionalUnarchivedValue<T: JSONCoding>(discardingErrorsIn json: Any, _ unarchiver: JSONUnarchiving) throws -> T? {


    public func optionalDateValue(timeIntervalSince1970In json: Any) throws -> Date? {
        let interval: TimeInterval? = try optionalValue(in: json)
        return interval.flatMap(Date.init(timeIntervalSince1970:))
    }

    public func dateValue(timeIntervalSince1970In json: Any) throws -> Date {


    public func optionalKeyValue(in json: Any) throws -> JSONKey? {
        let keyValue: String? = try optionalValue(in: json)
        return keyValue.flatMap { JSONRandomKey(keyValue: $0) }
    }

    public func keyValue(in json: Any) throws -> JSONKey {
