@Override public void visit(OrderByNode orderByNode) { if (query.getChildren(orderByNode).size() != 1) { throw new InvalidIntermediateQueryException("ORDER BY node " + orderByNode + " must have ONE and ONLY ONE child.\n" + query); } ImmutableSet<Variable> requiredVariables = orderByNode.getLocallyRequiredVariables(); for (QueryNode child : query.getChildren(orderByNode)) { if (!query.getVariables(child).containsAll(requiredVariables)) { throw new InvalidIntermediateQueryException("Some variables used in the node " + this + " are not provided by its child " + child); } } } }