@Override
	public CompletableFuture<String> executeAsync(String command, boolean toString) {
		MatchedMethod execute =
			matches.getBest(ExecuteMatcher.class, null, ActionName.EXECUTE, ExecuteMatcher.ALL);
		if (execute == null) {
			return CompletableFuture.failedFuture(new NoSuchElementException());
		}
		Map<String, Object> args = new HashMap<>();
		args.put(execute.params.get("command").name(), command);
		args.put(execute.params.get("toString").name(), toString);
		return execute.method.invokeAsync(args).toCompletableFuture().thenApply(v -> (String) v);
	}
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