public synchronized CompletableFuture<Void> waitValue(T t) {
		if (disposalReason != null) {
			return CompletableFuture.failedFuture(disposalReason);
		}
		if (Objects.equals(this.val, t)) {
			return AsyncUtils.nil();
		}
		CompletableFuture<Void> waiter = waitsFor.get(t);
		if (waiter == null) {
			waiter = new CompletableFuture<>();
			waitsFor.put(t, waiter);
		}
		return waiter;
	}
Wait for this reference to accept a particular value (post-filter)

<p>
If the reference already has the given value, a completed future is returned.

@param t the expected value to wait on
@return a future that completes the next time the reference accepts the given value
Ghidra/Framework/Generic/src/main/java/ghidra/async/AsyncReference.java