@Override
    public void meet(Intersection node) {
      Filter clone = new Filter();
      clone.setCondition(filter.getCondition().clone());

      relocate(filter, node.getLeftArg());
      relocate(clone, node.getRightArg());

      FilterRelocator.relocate(filter);
      FilterRelocator.relocate(clone);
    }
    @Override
    public void meet(Union union) {
      Filter clone = new Filter();
      clone.setCondition(filter.getCondition().clone());

      relocate(filter, union.getLeftArg());
      relocate(clone, union.getRightArg());

      FilterRelocator.relocate(filter);
      FilterRelocator.relocate(clone);
    }
 @Override
 public void meet(Filter filter) {
   super.meet(filter);
   FilterRelocator.relocate(filter);
 }