@Override
public AstNode binary(BinaryOperator operator, Iterable<AstNode> operands) {
// this is to deal with the COMMA operator who can have less than two operands
if (Iterables.isEmpty(operands)) {
return new EmptyExpression();
}
if (Iterables.size(operands) == 1) {
return operands.iterator().next();
}
InfixExpression list = new InfixExpression();