@Override
  protected Filter visitLogicalExpression(LogicalExpression node, Void context) {
    List<Filter> filterList =
        node.getTerms().stream()
            .map(n -> n.accept(this, context))
            .filter(Objects::nonNull)
            .collect(Collectors.toList());
    switch (node.getOperator()) {
      case OR:
        return FilterFactory.or(filterList);
      case AND:
        return FilterFactory.and(filterList);
      default:
        throw new IllegalArgumentException("Unsupported operator: " + node.getOperator());
    }
  }
The caller must make sure that the Expression only contains valid time predicate
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/predicate/ConvertPredicateToTimeFilterVisitor.java