final Variable subject, final Variable object, final Node subjectNode, final Node objectNode) {
final BasicOperator leftSide=node.jjtGetChild(0).accept(this, connection, graphConstraint, subject, object, subjectNode, objectNode);
final BasicOperator rightSide = node.jjtGetChild(1).accept(this, connection, graphConstraint, subject, object, subjectNode, objectNode);
final Union union = new Union();
leftSide.addSucceedingOperator(new OperatorIDTuple(union,0));
rightSide.addSucceedingOperator(new OperatorIDTuple(union,1));
final Projection projection = new Projection();
projection.addProjectionElement(subject);
projection.addProjectionElement(object);
if(graphConstraint!=null && graphConstraint.isVariable() && !graphConstraint.equals(getItem(subjectNode)) && !graphConstraint.equals(getItem(objectNode))) {
projection.addProjectionElement((Variable)graphConstraint);