public static boolean equivalent(
      Expression left, Expression right, Types.StructType struct, boolean caseSensitive) {
    return Binder.bind(struct, Expressions.rewriteNot(left), caseSensitive)
        .isEquivalentTo(Binder.bind(struct, Expressions.rewriteNot(right), caseSensitive));
  }
@Test
  public void testAndEquivalence() {
    assertThat(
            ExpressionUtil.equivalent(
                Expressions.and(
                    Expressions.lessThan("id", 34), Expressions.greaterThanOrEqual("id", 20)),
                Expressions.and(
                    Expressions.greaterThan("id", 19L), Expressions.lessThanOrEqual("id", 33L)),
                STRUCT,
                true))
        .as("Should detect and equivalence in any order")
        .isTrue();
  }