public CompletableFuture<Void> atSystemTime(long timeMillis) {
		if (timeMillis - System.currentTimeMillis() <= 0) {
			return AsyncUtils.nil();
		}

		long delta = timeMillis - System.currentTimeMillis();
		Executor executor =
			delta <= 0 ? thread : CompletableFuture.delayedExecutor(delta, TimeUnit.MILLISECONDS);
		return CompletableFuture.runAsync(() -> {
		}, executor);
	}
Schedule a task to run when {@link System#currentTimeMillis()} has passed a given time

<p>
This method returns immediately, giving a future result. The future completes "soon after"
the current system time passes the given time in milliseconds. There is some minimal
overhead, but the scheduler endeavors to complete the future as close to the given time as
possible. The actual scheduled time will not precede the requested time.

@param timeMillis the time after which the returned future completes
@return a future that completes soon after the given time
Ghidra/Framework/Generic/src/main/java/ghidra/async/AsyncTimer.java