docs: public static <T> T extractSecondsAndNanos(BigDecimal seconds, BiFunction<Long, Integer, T> convert)
      {
          // Complexity is here to workaround unbounded latency in some BigDecimal operations.
          //   https://github.com/FasterXML/jackson-databind/issues/2141
  
          long secondsOnly;
          int nanosOnly;
  
          BigDecimal nanoseconds = seconds.scaleByPowerOfTen(9);
          if (nanoseconds.precision() - nanoseconds.scale() <= 0) {
              // There are no non-zero digits to the left of the decimal point.
              // This protects against very negative exponents.
              secondsOnly = nanosOnly = 0;
          }
          else if (seconds.scale() < -63) {
              // There would be no low-order bits once we chop to a long.
              // This protects against very positive exponents.
              secondsOnly = nanosOnly = 0;
          }
          else {
              // Now we know that seconds has reasonable scale, we can safely chop it apart.
              secondsOnly = seconds.longValue();
              nanosOnly = nanoseconds.subtract(new BigDecimal(secondsOnly).scaleByPowerOfTen(9)).intValue();
          }
  
          return convert.apply(secondsOnly, nanosOnly);
      }