             try container.encode(formatter.string(from: date))
         }
     }
-
-    /// Encode the `Date` as a custom value encoded by the given closure.
-    ///
-    /// If the closure fails to encode a value into the given encoder,
-    /// the encoder will encode an empty automatic container in its place.
-    public static func custom(_ closure: @escaping Closure) -> ObjectEncoder.DateEncodingStrategy {
-        return .init(identifiers: identifiers, closure: closure)
-    }
-
-    private static let identifiers = [Date.self, NSDate.self].map(ObjectIdentifier.init)
 }
 
 extension ObjectEncoder.EncodingStrategy where T == Decimal {
     public static let compatibleWithJSONEncoder = ObjectEncoder.EncodingStrategy<Decimal>.custom { decimal, encoder in
         encoder.object = NSDecimalNumber(decimal: decimal)
     }
-
-    public static func custom(_ closure: @escaping Closure) -> ObjectEncoder.EncodingStrategy<Decimal> {
-        return .init(identifiers: identifiers, closure: closure)
-    }
-
-    private static let identifiers = [Decimal.self, NSDecimalNumber.self].map(ObjectIdentifier.init)
 }
 
 extension ObjectEncoder.EncodingStrategy where T == Double {

    ///
    /// If the closure fails to encode a value into the given encoder,
    /// the encoder will encode an empty automatic container in its place.
    public static func custom(_ types: [Any.Type] = [T.self],
                              _ closure: @escaping Closure) -> ObjectEncoder.EncodingStrategy<T> {
        return .init(identifiers: types.map(ObjectIdentifier.init), closure: closure)
    }
}


            }
        }
    }
}

extension ObjectEncoder.EncodingStrategy where T == URL {
