code: @Override
      public UtcInstant convertToUtc(TaiInstant taiInstant) {
          Data data = dataRef.get();
          long[] mjds = data.dates;
          long[] tais = data.taiSeconds;
          int pos = Arrays.binarySearch(tais, taiInstant.getTaiSeconds());
          pos = (pos >= 0 ? pos : ~pos - 1);
          int taiOffset = (pos >= 0 ? data.offsets[pos] : 10);
          long adjustedTaiSecs = taiInstant.getTaiSeconds() - taiOffset;
          long mjd = Math.floorDiv(adjustedTaiSecs, SECS_PER_DAY) + OFFSET_MJD_TAI;
          long nod = Math.floorMod(adjustedTaiSecs, SECS_PER_DAY) * NANOS_PER_SECOND + taiInstant.getNano();
          long mjdNextRegionStart = (pos + 1 < mjds.length ? mjds[pos + 1] + 1 : Long.MAX_VALUE);
          if (mjd == mjdNextRegionStart) {  // in leap second
              mjd--;
              nod = SECS_PER_DAY * NANOS_PER_SECOND + (nod / NANOS_PER_SECOND) * NANOS_PER_SECOND + nod % NANOS_PER_SECOND;
          }
          return UtcInstant.ofModifiedJulianDay(mjd, nod);
      }
docs: -----------------------------------------------------------------------