code: private synchronized long getTimeSynchronized()
              throws OverClockedException {
          if (currentTimeMillis != System.currentTimeMillis()) {
              currentTimeMillis = System.currentTimeMillis();
              generatedThisMilli = 0;
          }
          // Set time as current time millis plus offset times 100 ns ticks
          long currentTime =
              (currentTimeMillis + GREGORIAN_CHANGE_OFFSET)
                  * INTERVALS_PER_MILLI;
  
          // Return the same time - generator/client code must check to see if overclocked
          if (generatedThisMilli + 1 >= INTERVALS_PER_MILLI) {
              throw new OverClockedException();
          }
          // Return the uuid time plus the artifical tick incremented
          return (currentTime + generatedThisMilli++);
      }
docs: <p>Object synchronized method returns the current time in 100ns
  intervals since the Gregorian change offset.</p>
  
  @return  the current time in 100ns intervals since the Gregorian change
  offset.
  @throws  OverClockedException an exception raised if too many timestamps
  have been generated for the system time interval.