private List<Expression<?>> visit(List<Expression<?>> args, C context) {
        List<Expression<?>> result = new ArrayList<>();
        for (Expression<?> arg : args) {
            result.add(arg.accept(this, context));
        }
        return CollectionUtils.unmodifiableList(result);
    }
{@code ReplaceVisitor} is a deep visitor that can be customized to replace segments of
expression trees

@param <C> context type
querydsl-core/src/main/java/com/querydsl/core/support/ReplaceVisitor.java