     ///
     /// 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)
+    public static func custom(_ closure: @escaping Closure) -> ObjectEncoder.EncodingStrategy<T> {
+        return .init(closure: closure)
     }
 }
 

        var container = encoder.singleValueContainer()
        try container.encode(url.absoluteString)
    }

    public static func custom(_ closure: @escaping Closure) -> ObjectEncoder.EncodingStrategy<URL> {
        return .init(identifiers: identifiers, closure: closure)
    }

    private static let identifiers = [URL.self, NSURL.self].map(ObjectIdentifier.init)
} // swiftlint:disable:this file_length

    public static let base64 = ObjectEncoder.DataEncodingStrategy.custom {
        try $0.base64EncodedString().encode(to: $1)
    }
}

@available(OSX 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
