Refactor ExpressionCompiler