public Matcher descend(String namespace, String name) {
        Matcher a = this.a.descend(namespace, name);
        Matcher b = this.b.descend(namespace, name);
        if (a == FAIL) {
            return b;
        } else if (b == FAIL) {
            return a;
        } else if (this.a == a && this.b == b) {
            return this;
        } else {
            return new CompositeMatcher(a, b);
        }
    }
Composite XPath evaluation state. Used when XPath evaluation results
in two or more branches of independent evaluation states.
tika-core/src/main/java/org/apache/tika/sax/xpath/CompositeMatcher.java