@Override
    public ScalarOperator visitCaseWhenOperator(CaseWhenOperator operator, Void context) {
        return shuttleIfUpdate(operator);
    }
@Test
    void visitCaseWhenOperator_1() {
        ColumnRefOperator columnRefOperator = new ColumnRefOperator(1, Type.INT, "", true);
        BinaryPredicateOperator whenOperator1 =
                new BinaryPredicateOperator(BinaryType.EQ, columnRefOperator,
                        ConstantOperator.createInt(1));
        ConstantOperator constantOperator1 = ConstantOperator.createChar("1");
        BinaryPredicateOperator whenOperator2 =
                new BinaryPredicateOperator(BinaryType.EQ, columnRefOperator,
                        ConstantOperator.createInt(2));
        ConstantOperator constantOperator2 = ConstantOperator.createChar("2");

        CaseWhenOperator operator =
                new CaseWhenOperator(Type.VARCHAR, null, ConstantOperator.createChar("others", Type.VARCHAR),
                        ImmutableList.of(whenOperator1, constantOperator1, whenOperator2, constantOperator2));

        CaseWhenOperator otherOperator =
                new CaseWhenOperator(Type.VARCHAR, null, null,
                        ImmutableList.of(whenOperator1, constantOperator1, whenOperator2, constantOperator2));

        BaseScalarOperatorShuttle testShuttle = new BaseScalarOperatorShuttle() {
            @Override
            public ScalarOperator visitConstant(ConstantOperator literal, Void context) {
                return ConstantOperator.createChar("3");
            }
        };
        ScalarOperator newOperator = testShuttle.visitCaseWhenOperator(operator, null);
        assertNotEquals(operator, newOperator);
        newOperator = testShuttle.visitCaseWhenOperator(otherOperator, null);
        assertNotEquals(otherOperator, newOperator);

    }