LinkedList<OptimizerRule> ruleStack ) {
Set<PlanNode> copiedSelectNodes = new HashSet<PlanNode>();
for (PlanNode join : plan.findAllAtOrBelow(Type.JOIN)) {
// Get the join condition ...
JoinCondition joinCondition = join.getProperty(Property.JOIN_CONDITION, JoinCondition.class);
if (joinCondition instanceof EquiJoinCondition) {
EquiJoinCondition equiJoinCondition = (EquiJoinCondition)joinCondition;
SelectorName selector1 = equiJoinCondition.getSelector1Name();
SelectorName selector2 = equiJoinCondition.getSelector2Name();
String property1 = equiJoinCondition.getProperty1Name();