}
if( !(baseFilter instanceof BinaryLogicOperator)){
return baseFilter; // nothing to traverse
}
if (recurse) {
DuplicatingFilterVisitor remove = new DuplicatingFilterVisitor() {
public Object visit(Or filter, Object extraData) {
List<Filter> newChildren = children(filter, targetFilter, extraData);
if (newChildren.isEmpty()) {
// every time you remove a filter from an Or
// expression you get less stuff, so removing the last is ...