private Transformer getConcreteUnaryTransformer(Expression expression, LayerReader parentReader) {
    switch (expression.getExpressionType()) {
      case IN:
        InExpression inExpression = (InExpression) expression;
        return new InTransformer(parentReader, inExpression.isNotIn(), inExpression.getValues());
      case IS_NULL:
        IsNullExpression isNullExpression = (IsNullExpression) expression;
        return new IsNullTransformer(parentReader, isNullExpression.isNot());
      case LOGIC_NOT:
        return new LogicNotTransformer(parentReader);
      case NEGATION:
        return new ArithmeticNegationTransformer(parentReader);
      case LIKE:
        LikeExpression likeExpression = (LikeExpression) expression;
        LikePattern pattern =
            LikePattern.compile(likeExpression.getPattern(), likeExpression.getEscape());
        return new LikeTransformer(parentReader, pattern);
      case REGEXP:
        RegularExpression regularExpression = (RegularExpression) expression;
        return new RegularTransformer(parentReader, regularExpression.getPattern());
      default:
        throw new UnsupportedOperationException(
            "Unsupported Expression Type: " + expression.getExpressionType());
    }
  }
Responsible for constructing {@link IntermediateLayer} through Expression.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java