try {
AbstractOptimization opt = ClassUtil.newInstance(optClass,
new Object[] { state },
new Class<?>[] { PlanOptimizerState.class });
assert (opt != null);
Pair<Boolean, AbstractPlanNode> p = opt.optimize(new_root);
if (p.getFirst()) {
if (debug.val)
LOG.debug(String.format("%s modified query plan", optClass.getSimpleName()));
new_root = p.getSecond();
}