 
     /// The strategy to use in decoding binary data. Defaults to `.base64`.
     open var dataDecodingStrategy: DataDecodingStrategy = .base64
+    
+    /// The strategy to use in decoding nil data. Defaults to `.empty`.
+    open var nilDecodingStrategy: NilDecodingStrategy = .empty
 
     /// Contextual user-provided information for use during decoding.
     open var userInfo: [CodingUserInfoKey: Any] = [:]

        return _Options(boolDecodingStrategy: boolDecodingStrategy,
                        dateDecodingStrategy: dateDecodingStrategy,
                        dataDecodingStrategy: dataDecodingStrategy,
                        userInfo: userInfo)
    }


    }

    public func decodeNil(forKey key: Key) throws -> Bool {
        switch decoder.options.nilDecodingStrategy {
        case .empty:
            return try self.value(for: key).isEmpty
        case .custom(let customClosure):
            return customClosure(try self.value(for: key))
        }
    }

    public func decode(_ type: Bool.Type, forKey key: Key) throws -> Bool {
