code: @Override
      public LocalTime plus(long amountToAdd, TemporalUnit unit) {
          if (unit instanceof ChronoUnit) {
              ChronoUnit f = (ChronoUnit) unit;
              switch (f) {
                  case NANOS: return plusNanos(amountToAdd);
                  case MICROS: return plusNanos((amountToAdd % MICROS_PER_DAY) * 1000);
                  case MILLIS: return plusNanos((amountToAdd % MILLIS_PER_DAY) * 1000000);
                  case SECONDS: return plusSeconds(amountToAdd);
                  case MINUTES: return plusMinutes(amountToAdd);
                  case HOURS: return plusHours(amountToAdd);
                  case HALF_DAYS: return plusHours((amountToAdd % 2) * 12);
              }
              throw new UnsupportedTemporalTypeException("Unsupported unit: " + unit);
          }
          return unit.addTo(this, amountToAdd);
      }
docs: Returns a copy of this time with the specified period added.
  <p>
  This method returns a new time based on this time with the specified period added.
  This can be used to add any period that is defined by a unit, for example to add hours, minutes or seconds.
  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 LocalTime} based on this time with the specified period added, not null
  @throws DateTimeException if the unit cannot be added to this type