code: public static long currentTimeMicros() {
          if (javaVersion() == 8) {
              return TimeUnit.MILLISECONDS.toMicros(System.currentTimeMillis());
          } else {
              // Java 9+ support higher precision wall time.
              final Instant now = Clock.systemUTC().instant();
              return TimeUnit.SECONDS.toMicros(now.getEpochSecond()) + TimeUnit.NANOSECONDS.toMicros(
                      now.getNano());
          }
      }
docs: Returns the number of microseconds since the epoch (00:00:00, 01-Jan-1970, GMT). The precision of the
  returned value may vary depending on {@linkplain #javaVersion() Java version}. Currently, Java 9 or
  above is required for microsecond precision. {@code System.currentTimeMillis() * 1000} is returned on
  Java 8.