protected FoundRegister findRegister(TraceObject container, PathFilter filter,
			Register register) {
		TraceObjectValue val;
		val = tryRegister(container, filter, register.getName());
		if (val != null) {
			return new FoundRegister(register, val);
		}
		/**
		 * When checking for register validity, we consider it valid if it or any of its parents are
		 * valid, or any alias thereof.
		 */
		for (String alias : register.getAliases()) {
			val = tryRegister(container, filter, alias);
			if (val != null) {
				return new FoundRegister(register, val);
			}
		}
		Register parent = register.getParentRegister();
		if (parent == null) {
			return null;
		}
		return findRegister(container, filter, parent);
	}
NOTE: Don't read in parallel, lest we overload the connection. This does queue them all
up in a CF chain, though. Still, a request doesn't go out until the preceding one
completes.
Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiTarget.java