@Override
	public CompletableFuture<Void> activateAsync(DebuggerCoordinates prev,
			DebuggerCoordinates coords) {
		boolean timeNeq = !Objects.equals(prev.getTime(), coords.getTime());
		if (timeNeq) {
			requestCaches.invalidate();
		}
		TraceObject object = coords.getObject();
		if (object == null) {
			return AsyncUtils.nil();
		}

		KeyPath path = object.getCanonicalPath();
		MatchedMethod activate = matches.getBest(ActivateMatcher.class, path, ActionName.ACTIVATE,
			ActivateMatcher.makeBySpecificity(object.getRoot().getSchema(), path));
		if (activate == null) {
			return AsyncUtils.nil();
		}

		Map<String, Object> args = new HashMap<>();
		RemoteParameter paramFocus = activate.params.get("focus");
		args.put(paramFocus.name(),
			object.findSuitableSchema(getSchemaContext().getSchema(paramFocus.type())));
		RemoteParameter paramTime = activate.params.get("time");
		if (paramTime != null && (paramTime.required() || timeNeq)) {
			args.put(paramTime.name(), coords.getTime().toString());
		}
		RemoteParameter paramSnap = activate.params.get("snap");
		if (paramSnap != null && (paramSnap.required() || timeNeq)) {
			args.put(paramSnap.name(), coords.getSnap());
		}
		return activate.method.invokeAsync(args).toCompletableFuture().thenApply(__ -> null);
	}
Search for the most preferred method for a given operation, with respect to a given path

<p>
A given path should be given as a point of reference, usually the current object or the
object from the UI action context. If given, parameters that require a certain
{@link TraceObjectInterface} will seek a suitable schema from that path and require it.
Otherwise, any parameter whose schema includes the interface will be accepted.

@param <T> the matcher class representing the desired operation
@param cls the matcher class representing the desired operation
@param path a path as a point of reference, or null for "any" point of reference.
@param action the required action name for a matching method
@param preferred the list of matchers (signatures) in preferred order
@return the best method, or null
Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiTarget.java