     @available(macOS 10.9, iOS 8.0, *)
     public mutating func setValue(_ value: Int?, for component: Calendar.Component) {
         _applyMutation {
-            $0.setValue(_setter(value), forComponent: Calendar._toCalendarUnit([component]))
+            $0.setValue(DateComponents._setter(value), forComponent: Calendar._toCalendarUnit([component]))
         }
     }
     

    /// - note: This value is interpreted in the context of the calendar in which it is used.
    public var era: Int? {
        get { return _handle.map { _getter($0.era) } }
        set { _applyMutation { $0.era = _setter(newValue) } }
    }
    
    /// A year or count of years.
    /// - note: This value is interpreted in the context of the calendar in which it is used.
    public var year: Int? {
        get { return _handle.map { _getter($0.year) } }
        set { _applyMutation { $0.year = _setter(newValue) } }
    }
    
    /// A month or count of months.
    /// - note: This value is interpreted in the context of the calendar in which it is used.
    public var month: Int? {
        get { return _handle.map { _getter($0.month) } }
        set { _applyMutation { $0.month = _setter(newValue) } }
    }
    
    /// A day or count of days.
    /// - note: This value is interpreted in the context of the calendar in which it is used.
    public var day: Int? {
        get { return _handle.map { _getter($0.day) } }
        set { _applyMutation { $0.day = _setter(newValue) } }
    }
    
    /// An hour or count of hours.
    /// - note: This value is interpreted in the context of the calendar in which it is used.
    public var hour: Int? {
        get { return _handle.map { _getter($0.hour) } }
        set { _applyMutation { $0.hour = _setter(newValue) } }
    }
    
    /// A minute or count of minutes.
    /// - note: This value is interpreted in the context of the calendar in which it is used.
    public var minute: Int? {
        get { return _handle.map { _getter($0.minute) } }
        set { _applyMutation { $0.minute = _setter(newValue) } }
    }
    
    /// A second or count of seconds.
    /// - note: This value is interpreted in the context of the calendar in which it is used.
    public var second: Int? {
        get { return _handle.map { _getter($0.second) } }
        set { _applyMutation { $0.second = _setter(newValue) } }
    }
    
    /// A nanosecond or count of nanoseconds.
    /// - note: This value is interpreted in the context of the calendar in which it is used.
    public var nanosecond: Int? {
        get { return _handle.map { _getter($0.nanosecond) } }
        set { _applyMutation { $0.nanosecond = _setter(newValue) } }
    }
    
    /// A weekday or count of weekdays.
    /// - note: This value is interpreted in the context of the calendar in which it is used.
    public var weekday: Int? {
        get { return _handle.map { _getter($0.weekday) } }
        set { _applyMutation { $0.weekday = _setter(newValue) } }
    }
    
    /// A weekday ordinal or count of weekday ordinals.

    /// - note: This value is interpreted in the context of the calendar in which it is used.
    public var yearForWeekOfYear: Int? {
        get { return _handle.map { _getter($0.yearForWeekOfYear) } }
        set { _applyMutation { $0.yearForWeekOfYear = DateComponents._setter(newValue) } }
    }
    
    /// Set to true if these components represent a leap month.
