problemVars.retainAll(optionalVars);
problemVars.removeAll(leftVars);
if (problemVars.isEmpty()) {
// left join is "well designed"
return new LeftJoinCursor(this, leftJoin, bindings);
}
else {
return new BadlyDesignedLeftJoinCursor(this, leftJoin, bindings, problemVars);
}
}