public synchronized void contact(T val) {
		lastContact = val;
		if (alarm != null) {
			alarm.cancel(false);
		}
		alarm = timer.mark().after(windowMillis).thenRun(this::doSettled);
	}
Send a contact event

<P>
This sets or resets the timer for the event window. The settled event will fire with the
given value after this waiting period, unless another contact event occurs first.

@param val the new value
Ghidra/Framework/Generic/src/main/java/ghidra/async/AsyncDebouncer.java