public static Expression fromJson(String json) {
    return fromJson(json, null);
  }
@Test
  public void invalidOperationType() {
    assertThatThrownBy(
            () ->
                ExpressionParser.fromJson(
                    "{\n"
                        + "  \"type\" : \"not\",\n"
                        + "  \"child\" : {\n"
                        + "    \"type\" : \"illegal\",\n"
                        + "    \"term\" : \"column-name\",\n"
                        + "    \"values\" : [ \"a\" ]\n"
                        + "  }\n"
                        + "}"))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Invalid operation type: illegal");

    assertThatThrownBy(
            () ->
                ExpressionParser.fromJson(
                    "{\n"
                        + "  \"type\" : \"ILLEGAL\",\n"
                        + "  \"child\" : {\n"
                        + "    \"type\" : \"lt\",\n"
                        + "    \"term\" : \"column-name\",\n"
                        + "    \"values\" : [ \"a\" ]\n"
                        + "  }\n"
                        + "}"))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Invalid operation type: ILLEGAL");
  }