@Override
public void prepare(ExecutionPlan p) {
if (!(p instanceof SelectorExecutionPlan)) {
throw new IllegalArgumentException("Not a selector plan");
}
SelectorExecutionPlan selectorPlan = (SelectorExecutionPlan) p;
if (selectorPlan.getSelector() != this) {
throw new IllegalArgumentException("Not a plan for this selector");
}
pushDown();
this.plan = selectorPlan;
}