protected boolean isNodeVisible(final @NonNull CommandNode<C> node) {
        /* Check node is itself a command that is visible */
        final CommandComponent<C> component = node.component();
        if (component != null) {
            final Command<C> owningCommand = node.command();
            if (owningCommand != null && this.commandFilter.test(owningCommand)) {
                return true;
            }
        }

        /* Query the children recursively */
        for (CommandNode<C> childNode : node.children()) {
            if (this.isNodeVisible(childNode)) {
                return true;
            }
        }

        return false;
    }
Checks using the predicate whether a command node or one of its children is visible

@param node the node
@return {@code true} if the node is visible, {@code false} if it isn't
cloud-core/src/main/java/org/incendo/cloud/help/StandardHelpHandler.java