// we will visit the leaf and it will recursively walk the plan
LogicalExpression leaf = (LogicalExpression)plan.getSources().get( 0 );
// if the leaf is a unary operator it should be a FilterFunc in
// which case we don't try to extract partition filter conditions
if(leaf instanceof BinaryExpression) {
BinaryExpression binExpr = (BinaryExpression)leaf;
visit( binExpr );
replaceChild( binExpr );
// if the entire expression is to be removed, then the above
// replaceChild will not set sawKey to false (sawKey is set to
// false only in replaceChild()