private static <T> List<T> removeAll(Collection<T> collection, Collection<T> elementsToRemove) {
      return collection.stream()
          .filter(element -> !elementsToRemove.contains(element))
          .collect(toImmutableList());
    }
Applies the boolean distributive property.

<p>For example: ( A & B ) | ( C & D ) => ( A | C ) & ( A | D ) & ( B | C ) & ( B | D)

<p>Returns the original expression if the expression is non-deterministic or if the
distribution will expand the expression by too much.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/ExtractCommonPredicatesExpressionRewriter.java