code: public LocalTime plusNanos(long nanosToAdd) {
          if (nanosToAdd == 0) {
              return this;
          }
          long nofd = toNanoOfDay();
          long newNofd = ((nanosToAdd % NANOS_PER_DAY) + nofd + NANOS_PER_DAY) % NANOS_PER_DAY;
          if (nofd == newNofd) {
              return this;
          }
          int newHour = (int) (newNofd / NANOS_PER_HOUR);
          int newMinute = (int) ((newNofd / NANOS_PER_MINUTE) % MINUTES_PER_HOUR);
          int newSecond = (int) ((newNofd / NANOS_PER_SECOND) % SECONDS_PER_MINUTE);
          int newNano = (int) (newNofd % NANOS_PER_SECOND);
          return create(newHour, newMinute, newSecond, newNano);
      }
docs: Returns a copy of this {@code LocalTime} with the specified number of nanoseconds added.
  <p>
  This adds the specified number of nanoseconds to this time, returning a new time.
  The calculation wraps around midnight.
  <p>
  This instance is immutable and unaffected by this method call.
  
  @param nanosToAdd  the nanos to add, may be negative
  @return a {@code LocalTime} based on this time with the nanoseconds added, not null