code: @Override
      public LocalDate plus(long amountToAdd, TemporalUnit unit) {
          if (unit instanceof ChronoUnit) {
              ChronoUnit f = (ChronoUnit) unit;
              switch (f) {
                  case DAYS: return plusDays(amountToAdd);
                  case WEEKS: return plusWeeks(amountToAdd);
                  case MONTHS: return plusMonths(amountToAdd);
                  case YEARS: return plusYears(amountToAdd);
                  case DECADES: return plusYears(Jdk8Methods.safeMultiply(amountToAdd, 10));
                  case CENTURIES: return plusYears(Jdk8Methods.safeMultiply(amountToAdd, 100));
                  case MILLENNIA: return plusYears(Jdk8Methods.safeMultiply(amountToAdd, 1000));
                  case ERAS: return with(ERA, Jdk8Methods.safeAdd(getLong(ERA), amountToAdd));
              }
              throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit);
          }
          return unit.addTo(this, amountToAdd);
      }
docs: Returns a copy of this date with the specified period added.
  <p>
  This method returns a new date based on this date with the specified period added.
  This can be used to add any period that is defined by a unit, for example to add years, months or days.
  The unit is responsible for the details of the calculation, including the resolution
  of any edge cases in the calculation.
  <p>
  This instance is immutable and unaffected by this method call.
  
  @param amountToAdd  the amount of the unit to add to the result, may be negative
  @param unit  the unit of the period to add, not null
  @return a {@code LocalDate} based on this date with the specified period added, not null
  @throws DateTimeException if the unit cannot be added to this type