     
     // MARK: - Shifts
     
+    //MARK: In Place
     mutating func shift(by interval: TimeInterval) {
         self.beginning?.addTimeInterval(interval)
         self.end?.addTimeInterval(interval)

        self.end = self.beginning?.add(chunk)
    }
    
    // MARK: - Operator Overloads
    
    // Default anchor = end
    static func +(leftAddend: TimePeriod, rightAddend: TimeInterval) -> TimePeriod {
        return leftAddend.lengthened(by: rightAddend, at: .beginning) as! TimePeriod
    }
    
    static func +(leftAddend: TimePeriod, rightAddend: TimeChunk) -> TimePeriod {
        return leftAddend.lengthened(by: rightAddend, at: .beginning) as! TimePeriod
    }
    
    // Default anchor = end
    static func -(minuend: TimePeriod, subtrahend: TimeInterval) -> TimePeriod {
        return minuend.shortened(by: subtrahend, at: .beginning) as! TimePeriod
    }
    
    static func -(minuend: TimePeriod, subtrahend: TimeChunk) -> TimePeriod {
        return minuend.shortened(by: subtrahend, at: .beginning) as! TimePeriod
    }
    
    static func ==(left: TimePeriod, right: TimePeriodProtocol) -> Bool {

    }
    
    // MARK: - Lengthen / Shorten
    
    // MARK: In Place
    // Do not lengthen by month at anchor center. Month cannot be divided reliably.
