 		}
 	}
 	
-	public func drp_beginning(of component: Calendar.Component, calendar: Calendar = Calendar.current) -> Date? {
+	func drp_beginning(of component: Calendar.Component, calendar: Calendar = Calendar.current) -> Date? {
 		var startDate = self
 		var timeInterval: TimeInterval = 0
 		guard calendar.dateInterval(of: component, start: &startDate, interval: &timeInterval, for: self) else { return nil }
 		return startDate
 	}
 	
-	public func drp_end(of component: Calendar.Component, calendar: Calendar = Calendar.current,
+	func drp_end(of component: Calendar.Component, calendar: Calendar = Calendar.current,
 	                    returnNextIfAtBoundary: Bool = true) -> Date? {
 		guard let startDate = drp_beginning(of: component, calendar: Calendar.current) else { return nil }
 		if startDate == self && !returnNextIfAtBoundary { return self }
 		return startDate.drp_adding(1, component: component, calendar: calendar)
 	}
 	
-	public func drp_settingHour(to value: Int, calendar: Calendar = Calendar.current) -> Date? {
+	func drp_settingHour(to value: Int, calendar: Calendar = Calendar.current) -> Date? {
 		return calendar.date(bySettingHour: value, minute: 0, second: 0, of: self)
 	}
 	
-	public func drp_beginningOfShiftedDay(by shiftedHour: Int, calendar: Calendar = Calendar.current) -> Date? {
+	func drp_beginningOfShiftedDay(by shiftedHour: Int, calendar: Calendar = Calendar.current) -> Date? {
 		// We could also use calendar.nextDate(after:...) here, but that is significantly slower.
 		let modifiedDate = self.drp_settingHour(to: shiftedHour, calendar: calendar)
 		if let modifiedDate = modifiedDate, modifiedDate <= self {

		return advancedDate
	}
	
	public func drp_beginning(ofCalendarUnit unit: NSCalendar.Unit, calendar: Calendar = Calendar.current) -> Date? {
		var reducedDate: NSDate?
		(calendar as NSCalendar).range(of: unit, start: &reducedDate, interval: nil, for: self)
		return reducedDate as Date?
	}
	
	public func drp_end(ofCalendarUnit unit: NSCalendar.Unit, calendar: Calendar = Calendar.current,
	                    adjustByOneSecond: Bool = true, returnNextIfAtBoundary: Bool = true) -> Date? {
		guard let startDate = drp_beginning(ofCalendarUnit: unit, calendar: Calendar.current) else { return nil }
		if startDate == self && !adjustByOneSecond && !returnNextIfAtBoundary { return self }


// Required for backwards compatibility with Objective-C.
public extension NSDate {
	func drp_addCalendarUnits(_ count: Int, unit: NSCalendar.Unit, calendar: Calendar = Calendar.current) -> NSDate? {
		return (self as Date).drp_addCalendarUnits(count, unit: unit, calendar: calendar) as NSDate?
	}
	
	func drp_beginning(ofCalendarUnit unit: NSCalendar.Unit, calendar: Calendar = Calendar.current) -> NSDate? {
		return (self as Date).drp_beginning(ofCalendarUnit: unit, calendar: calendar) as NSDate?
	}
	
	func drp_end(ofCalendarUnit unit: NSCalendar.Unit, calendar: Calendar = Calendar.current) -> NSDate? {
		return (self as Date).drp_end(ofCalendarUnit: unit, calendar: calendar) as NSDate?
	}
	
	func drp_calendarUnits(since: NSDate, unit: NSCalendar.Unit, calendar: Calendar = Calendar.current) -> Int? {
		return (self as Date).drp_calendarUnits(since: since as Date, unit: unit, calendar: calendar)
	}
	
	// Returns the number of calendar days between the argument and the receiver.
	func drp_daysSince(_ since: NSDate, calendar: Calendar = Calendar.current) -> Int? {
		return (self as Date).drp_daysSince(since as Date, calendar: calendar)
	}
}
