public Expression NewExpression(Expression instanceParameter) { var parameters = CtorParams.Select(map => { var result = new ExpressionResolutionResult(instanceParameter, Ctor.DeclaringType); foreach (var resolver in map.SourceResolvers) { var matchingExpressionConverter = ExpressionResultConverters.FirstOrDefault(c => c.CanGetExpressionResolutionResult(result, resolver)); if (matchingExpressionConverter == null) throw new Exception("Can't resolve this to Queryable Expression"); result = matchingExpressionConverter.GetExpressionResolutionResult(result, map, resolver); } return result; }); return Expression.New(Ctor, parameters.Select(p => p.ResolutionExpression)); }