code: public boolean sleep(final boolean mayInterrupt)
  	{
  		while (isValid())
  		{
  			try
  			{
  				Thread.sleep(getTimeLeft(TimeUnit.MILLISECONDS));
  			}
  			catch (InterruptedException e)
  			{
  				if (mayInterrupt)
  					return true;
  			}
  		}
  
  		return false;
  	}
docs: Sleeps the current thread until this deadline has expired; if <code>mayInterrupt</code> is true then an interrupt will
  cause this method to return true<br />
  This is essentially a neater way of calling Thread.sleep
  
  @param mayInterrupt
  whether this method may be interrupted by an InterruptedException
  
  @return whether the sleep was ended early by an interrupt