protected override Expression VisitMethodCall(MethodCallExpression m) { if (m.IsSelectHtmlMethod()) { Expression iterator = m.Arguments[0]; Expression nullPropagatingIterator = new MemberAccessNullPropagateVisitor().Rewrite(iterator); PropertyPath iteratorPath = CreatePropertyPath(iterator); Expression iteratorRoot = GetIteratorRoot(iterator); Expression rootInstanceParameter = iteratorRoot ?? Expression.Constant(null, typeof(object)); ConstantExpression propertyPathParameter = Expression.Constant(iteratorPath); MethodCallExpression callExpression = Expression.Call(m.Method, nullPropagatingIterator, rootInstanceParameter, propertyPathParameter, Visit(m.Arguments[3])); return callExpression; } return base.VisitMethodCall(m); }