@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);
    }
  }