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

    }

    /// create a new `_Decoder` instance referencing `object` as `key` inheriting `userInfo`
    fileprivate func decoder(referencing object: Any, `as` key: CodingKey) -> _Decoder {
        return .init(object, options, userInfo, codingPath + [key])
    }
}

                          from object: Any,
                          userInfo: [CodingUserInfoKey: Any] = [:]) throws -> T where T: Decodable {
        do {
            return try ObjectDecoder.Decoder(object, options, userInfo).singleValueContainer().decode(type)
        } catch let error as DecodingError {
            throw error
        } catch {
