code: public Instant convertToInstant(UtcInstant utcInstant) {
          long mjd = utcInstant.getModifiedJulianDay();
          long utcNanos = utcInstant.getNanoOfDay();
          long epochDay = Math.subtractExact(mjd, OFFSET_MJD_EPOCH);
          long epochSec = Math.multiplyExact(epochDay, SECS_PER_DAY);
          int leapAdj = getLeapSecondAdjustment(mjd);
          long startSlsNanos = (SECS_PER_DAY + leapAdj - 1000) * NANOS_PER_SECOND;
          long slsNanos = utcNanos;
          if (leapAdj != 0 && utcNanos >= startSlsNanos) {
              slsNanos = utcNanos - leapAdj * (utcNanos - startSlsNanos) / 1000;  // apply UTC-SLS mapping
          }
          return Instant.ofEpochSecond(epochSec + slsNanos / NANOS_PER_SECOND, slsNanos % NANOS_PER_SECOND);
      }
docs: Converts a {@code UtcInstant} to an {@code Instant}.
  <p>
  This method converts from the UTC time-scale to one with 86400 subdivisions
  per day using the leap-second rules of the implementation.
  <p>
  The standard implementation uses the UTC-SLS algorithm.
  Overriding this algorithm is possible, however doing so will conflict other parts
  of the specification.
  <p>
  The algorithm calculates the UTC-SLS nanos-of-day {@code US} from the UTC nanos-of day {@code U}.<br>
  Let {@code L = getLeapAdjustment(mjd)}.<br>
  Let {@code B = 86400 + L - 1000}.<br>
  Let {@code US = U - L * (U - B) / 1000}.<br>
  Where the algorithm is applied while {@code U >= B}.
  
  @param utcInstant  the UTC instant to convert, not null
  @return the converted instant, not null
  @throws DateTimeException if the valid range is exceeded
  @throws ArithmeticException if numeric overflow occurs