private void ApplyIncludedMemberTypeMap(IncludedMember includedMember)
        {
            var typeMap    = includedMember.TypeMap;
            var expression = includedMember.MemberExpression;
            var memberMaps = typeMap.PropertyMaps.
                             Where(m => m.CanResolveValue && GetPropertyMap(m) == null)
                             .Select(p => new PropertyMap(p, this, expression))
                             .ToList();
            var notOverridenPathMaps = NotOverridenPathMaps(typeMap);

            if (memberMaps.Count == 0 && notOverridenPathMaps.Count == 0)
            {
                return;
            }
            memberMaps.ForEach(p =>
            {
                AddPropertyMap(p);
                foreach (var transformer in typeMap.ValueTransformers)
                {
                    p.AddValueTransformation(transformer);
                }
            });
            _beforeMapActions.UnionWith(typeMap._beforeMapActions.Select(CheckCustomSource));
            _afterMapActions.UnionWith(typeMap._afterMapActions.Select(CheckCustomSource));
            notOverridenPathMaps.ForEach(p => AddPathMap(new PathMap(p, this, expression)
            {
                CustomMapExpression = CheckCustomSource(p.CustomMapExpression)
            }));
            return;

            LambdaExpression CheckCustomSource(LambdaExpression lambda) => PropertyMap.CheckCustomSource(lambda, expression);
        }
 public void AddMemberMap(IncludedMember includedMember) => _includedMembersTypeMaps.Add(includedMember);