protected CompletableFuture<Void> toggleBreakpointSpecAsync(TraceObjectBreakpointSpec spec,
			boolean enabled) {
		KeyPath path = spec.getObject().getCanonicalPath();
		MatchedMethod toggleBreak =
			matches.getBest(ToggleBreakMatcher.class, path, ActionName.TOGGLE,
				ToggleBreakMatcher.SPEC);
		if (toggleBreak == null) {
			return AsyncUtils.nil();
		}
		return toggleBreak.method
				.invokeAsync(Map.ofEntries(
					Map.entry(toggleBreak.params.get("specification").name(), spec.getObject()),
					Map.entry(toggleBreak.params.get("enabled").name(), enabled)))
				.toCompletableFuture()
				.thenApply(__ -> null);
	}
When checking for register validity, we consider it valid if it or any of its parents are
valid, or any alias thereof.
Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiTarget.java