private boolean executePolicySelect() {
        PolicyDirective dir = routingContext.getDirective();
        policy = mbus.getRoutingPolicy(msg.getProtocol(), dir.getName(), dir.getParam());
        if (policy == null) {
            setError(ErrorCode.UNKNOWN_POLICY,
                     "Protocol '" + msg.getProtocol() + "' could not create routing policy '" +
                     dir.getName() + "' with parameter '" + dir.getParam() + "'.");
            return false;
        }
        if (trace.shouldTrace(TraceLevel.SPLIT_MERGE)) {
            trace.trace(TraceLevel.SPLIT_MERGE, "Running routing policy '" + dir.getName() + "'.");
        }
        try {
            policy.select(routingContext);
        } catch (RuntimeException e) {
            setError(ErrorCode.POLICY_ERROR,
                     "Policy '" + dir.getName() + "' and route '" +route + "' threw an exception during select; " + exceptionMessageWithTrace(e));
            return false;
        }
        if (children.isEmpty()) {
            if (reply == null) {
                setError(ErrorCode.NO_SERVICES_FOR_ROUTE,
                         "Policy '" + dir.getName() + "' selected no recipients for route '" + route + "'.");
            } else {
                if (trace.shouldTrace(TraceLevel.SPLIT_MERGE)) {
                    trace.trace(TraceLevel.SPLIT_MERGE,
                                "Policy '" + dir.getName() + "' assigned a reply to this branch.");
                }
            }
            return false;
        }
        for (RoutingNode child : children) {
            if (child.trace.shouldTrace(TraceLevel.SPLIT_MERGE)) {
                Hop hop = child.route.getHop(0);
                child.trace.trace(TraceLevel.SPLIT_MERGE,
                                  "Component '" + hop + "' selected by policy '" + dir.getName() + "'.");
            }
        }
        return true;
    }
Creates the {@link RoutingPolicy} referenced by the current routing context, and executes its {@link
RoutingPolicy#select(RoutingContext)} method.

@return True if at least one child was added.
messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java