docs: private static void sleepImpl(long millis, Closure closure) {
          long start = System.currentTimeMillis();
          long rest = millis;
          long current;
          while (rest > 0) {
              try {
                  Thread.sleep(rest);
                  rest = 0;
              } catch (InterruptedException e) {
                  if (closure != null) {
                      if (DefaultTypeTransformation.castToBoolean(closure.call(e))) {
                          return;
                      }
                  }
                  current = System.currentTimeMillis(); // compensate for closure's time
                  rest = millis + start - current;
              }
          }
      }