public void Compile(IResolver resolver) { // Create new instance each time instead? var visitor = new ExpressionCompilerVisitor(); foreach (var registration in resolver.Index) { var compilableRegistration = registration as IExpressionRegistration; if (compilableRegistration != null) { var compiledExpression = visitor.Compile(compilableRegistration); if (compiledExpression != compilableRegistration.Expression) { compilableRegistration.Expression = compiledExpression; } } } }