PlanNode parent = this.joinRoot.getParent();
boolean isLeftChild = parent.getFirstChild() == this.joinRoot;
parent.removeChild(joinRoot);
for (PlanNode critNode : criteria) {
critNode.removeFromParent();
critNode.removeAllChildren();
critNode.addFirstChild(root);