private ExpressionResolutionResult ResolveExpression(IMemberMap propertyMap, Type currentType, Expression instanceParameter, LetPropertyMaps letPropertyMaps) { var result = new ExpressionResolutionResult(instanceParameter, currentType); var matchingExpressionConverter = _configurationProvider.ResultConverters.FirstOrDefault(c => c.CanGetExpressionResolutionResult(result, propertyMap)); if (matchingExpressionConverter == null) { ThrowCannotMap(propertyMap, result); return(null); } result = matchingExpressionConverter.GetExpressionResolutionResult(result, propertyMap, letPropertyMaps); if (propertyMap.NullSubstitute != null && result.ResolutionExpression is MemberExpression && (result.Type.IsNullableType() || result.Type == typeof(string))) { return(new ExpressionResolutionResult(propertyMap.NullSubstitute(result.ResolutionExpression))); } return(result); }