code: public TaiInstant convertToTai(UtcInstant utcInstant) {
          long mjd = utcInstant.getModifiedJulianDay();
          long nod = utcInstant.getNanoOfDay();
          long taiUtcDaySeconds = Math.multiplyExact(Math.subtractExact(mjd, OFFSET_MJD_TAI), SECS_PER_DAY);
          long taiSecs = Math.addExact(taiUtcDaySeconds, nod / NANOS_PER_SECOND + getTaiOffset(mjd));
          int nos = (int) (nod % NANOS_PER_SECOND);
          return TaiInstant.ofTaiSeconds(taiSecs, nos);
      }
docs: Converts a {@code UtcInstant} to a {@code TaiInstant}.
  <p>
  This method converts from the UTC to the TAI time-scale using the
  leap-second rules of the implementation.
  
  @param utcInstant  the UTC instant to convert, not null
  @return the converted TAI instant, not null
  @throws DateTimeException if the valid range is exceeded
  @throws ArithmeticException if numeric overflow occurs