code: public Moment plus(
          long amount,
          SI unit
      ) {
  
          Moment.check1972(this);
  
          if (amount == 0) {
              return this;
          }
  
          Moment result;
  
          try {
              switch (unit) {
                  case SECONDS:
                      if (LeapSeconds.getInstance().isEnabled()) {
                          result = new Moment(
                              Math.addExact(this.getElapsedTimeUTC(), amount),
                              this.getNanosecond(),
                              UTC);
                      } else {
                          result = Moment.of(
                              Math.addExact(this.posixTime, amount),
                              this.getNanosecond(),
                              POSIX
                          );
                      }
                      break;
                  case NANOSECONDS:
                      long sum =
                          Math.addExact(this.getNanosecond(), amount);
                      int nano = (int) Math.floorMod(sum, MRD);
                      long second = Math.floorDiv(sum, MRD);
  
                      if (LeapSeconds.getInstance().isEnabled()) {
                          result = new Moment(
                              Math.addExact(this.getElapsedTimeUTC(), second),
                              nano,
                              UTC
                          );
                      } else {
                          result = Moment.of(
                              Math.addExact(this.posixTime, second),
                              nano,
                              POSIX
                          );
                      }
                      break;
                  default:
                      throw new UnsupportedOperationException();
              }
          } catch (IllegalArgumentException iae) {
              ArithmeticException ex =
                  new ArithmeticException(
                      "Result beyond boundaries of time axis.");
              ex.initCause(iae);
              throw ex;
          }
  
          if (amount < 0) {
              Moment.check1972(result);
          }
  
          return result;
  
      }
docs: /*[deutsch]
  <p>Addiert einen Betrag in der angegegebenen SI-Zeiteinheit auf die
  UTC-Zeit dieses Zeitstempels. </p>
  
  @param   amount  amount in units to be added
  @param   unit    time unit defined in UTC time space
  @return  changed copy of this instance
  @throws  UnsupportedOperationException if either this moment or the result are before 1972
  @throws  ArithmeticException in case of overflow