code: function icaltime_add(aDuration) {
        var mult = (aDuration.isNegative ? -1 : 1);
  
        // because of the duration optimizations it is much
        // more efficient to grab all the values up front
        // then set them directly (which will avoid a normalization call).
        // So we don't actually normalize until we need it.
        var second = this.second;
        var minute = this.minute;
        var hour = this.hour;
        var day = this.day;
  
        second += mult * aDuration.seconds;
        minute += mult * aDuration.minutes;
        hour += mult * aDuration.hours;
        day += mult * aDuration.days;
        day += mult * 7 * aDuration.weeks;
  
        this.second = second;
        this.minute = minute;
        this.hour = hour;
        this.day = day;
  
        this._cachedUnixTime = null;
      }
docs: Adds the duration to the current time. The instance is modified in
  place.
  
  @param {ICAL.Duration} aDuration         The duration to add