final Plan combined = new InnerNodePlan(left.clone(), right.clone());
this.lockBestPlan.lock();
try {
// do we have new best plan for joining the initial plans of the left and right operand?
final Plan currentBest = bestPlans[max - 1].get(keyLeft + keyRight);
if (currentBest == null || currentBest.compareTo(combined) > 0){
bestPlans[max - 1].put(keyLeft + keyRight, combined);
}
return;
} finally {
this.lockBestPlan.unlock();