     }
 
     public struct EncodingStrategy<T: Encodable> {
-        public typealias Closure = (T, Swift.Encoder) throws -> Void
+        public typealias Closure = (T, Encoder) throws -> Void
         public init(identifiers: [ObjectIdentifier], closure: @escaping Closure) {
             self.identifiers = identifiers
             self.closure = closure

}

extension ObjectEncoder.EncodingStrategy where T == Decimal {
    public static let compatibleWithJSONEncoder = ObjectEncoder.EncodingStrategy<Decimal>.custom {
        guard let encoder = $1 as? ObjectEncoder.Encoder else {
            fatalError("unreachable")
        }
        encoder.object = NSDecimalNumber(decimal: $0)
    }

    public static func custom(_ closure: @escaping Closure) -> ObjectEncoder.EncodingStrategy<Decimal> {

}

extension ObjectEncoder.EncodingStrategy where T == URL {
    public static let compatibleWithJSONEncoder = ObjectEncoder.EncodingStrategy<URL>.custom { url, encoder in
        var container = encoder.singleValueContainer()
        try container.encode(url.absoluteString)
    }

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