@Override public void write(ExpressionWriter writer) { // <left> <operator> if (left instanceof BinaryExpression && ((BinaryExpression) left).operator == operator) { // Chain. writer.write(left); writer.write(' '); writer.write(operator.text()); writer.write(' '); } else { writer.writeBracketed(left); writer.write(' '); writer.write(operator.text()); writer.write(' '); } // <right> if (operator == In || operator == NotIn) { writer.write('('); writer.write(right); writer.write(')'); } else { writer.writeBracketed(right); } }