if (childSelector == condition.childSelectorName() && parentSelector == condition.parentSelectorName()) return condition;
return new ChildNodeJoinCondition(parentSelector, childSelector);
}
if (joinCondition instanceof DescendantNodeJoinCondition) {
DescendantNodeJoinCondition condition = (DescendantNodeJoinCondition)joinCondition;
SelectorName ancestor = rewrittenSelectors.get(condition.ancestorSelectorName());
SelectorName descendant = rewrittenSelectors.get(condition.descendantSelectorName());
if (ancestor == null) ancestor = condition.ancestorSelectorName();
if (descendant == null) descendant = condition.descendantSelectorName();
if (ancestor == condition.ancestorSelectorName() && descendant == condition.descendantSelectorName()) return condition;
return new ChildNodeJoinCondition(ancestor, descendant);