code: public LocalDate withPeriodAdded(ReadablePeriod period, int scalar) {
          if (period == null || scalar == 0) {
              return this;
          }
          long instant = getLocalMillis();
          Chronology chrono = getChronology();
          for (int i = 0; i < period.size(); i++) {
              long value = FieldUtils.safeMultiply(period.getValue(i), scalar);
              DurationFieldType type = period.getFieldType(i);
              if (isSupported(type)) {
                  instant = type.getField(chrono).add(instant, value);
              }
          }
          return withLocalMillis(instant);
      }
docs: Returns a copy of this date with the specified period added.
  <p>
  If the addition is zero, then <code>this</code> is returned.
  <p>
  This method is typically used to add multiple copies of complex
  period instances. Adding one field is best achieved using methods
  like {@link #withFieldAdded(DurationFieldType, int)}
  or {@link #plusYears(int)}.
  <p>
  Unsupported time fields are ignored, thus adding a period of 24 hours
  will not have any effect.
  
  @param period  the period to add to this one, null means zero
  @param scalar  the amount of times to add, such as -1 to subtract once
  @return a copy of this date with the period added
  @throws ArithmeticException if the result exceeds the internal capacity