code: @Override
      public Instant plus(long amountToAdd, TemporalUnit unit) {
          if (unit instanceof ChronoUnit) {
              switch ((ChronoUnit) unit) {
                  case NANOS: return plusNanos(amountToAdd);
                  case MICROS: return plus(amountToAdd / 1000000, (amountToAdd % 1000000) * 1000);
                  case MILLIS: return plusMillis(amountToAdd);
                  case SECONDS: return plusSeconds(amountToAdd);
                  case MINUTES: return plusSeconds(Jdk8Methods.safeMultiply(amountToAdd, SECONDS_PER_MINUTE));
                  case HOURS: return plusSeconds(Jdk8Methods.safeMultiply(amountToAdd, SECONDS_PER_HOUR));
                  case HALF_DAYS: return plusSeconds(Jdk8Methods.safeMultiply(amountToAdd, SECONDS_PER_DAY / 2));
                  case DAYS: return plusSeconds(Jdk8Methods.safeMultiply(amountToAdd, SECONDS_PER_DAY));
              }
              throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit);
          }
          return unit.addTo(this, amountToAdd);
      }
docs: {@inheritDoc}
  @throws DateTimeException {@inheritDoc}
  @throws ArithmeticException {@inheritDoc}