private void ApplyMemberMaps(TypeMap currentMap, IConfigurationProvider configurationProvider) { foreach (var includedMemberExpression in currentMap.GetAllIncludedMembers()) { var includedMap = configurationProvider.GetIncludedTypeMaps(new[] { new TypePair(includedMemberExpression.Body.Type, currentMap.DestinationType) }).Single(); var includedMember = new IncludedMember(includedMap, includedMemberExpression); if (currentMap.AddMemberMap(includedMember)) { ApplyMemberMaps(includedMap, configurationProvider); foreach (var inheritedIncludedMember in includedMap.IncludedMembersTypeMaps) { currentMap.AddMemberMap(includedMember.Chain(inheritedIncludedMember)); } } } }