code: public void sleep(long timeout) throws InterruptedException {
           if (timeout > 0) {
               long ms = toMillis(timeout);
               int ns = excessNanos(timeout, ms);
               Thread.sleep(ms, ns);
           }
       }
docs: Perform a <tt>Thread.sleep</tt> using this unit.
  This is a convenience method that converts time arguments into the
  form required by the <tt>Thread.sleep</tt> method.
  @param timeout the minimum time to sleep
  @throws InterruptedException if interrupted while sleeping.
  @see java.lang.Thread#sleep