private IXmlMapper <TObject, TContext> mapperAsNode()
        {
            var serializer = _serializerRepository.SerializerOrDefaultFor(PropertyMap.PropertyType);
            IXmlMapper <TObject, TContext> nodeMapper;

            if (serializer == null)
            {
                var allSerializers = _serializerRepository.AllPossibleSerializerFor(PropertyMap.PropertyType);

                //One serializer => static
                if (allSerializers.Count == 1)
                {
                    nodeMapper = new XmlStaticMapper <TObject, TContext>(_serializerRepository, allSerializers[0], PropertyMap);
                }
                //More than one
                else if (allSerializers.Count > 1)
                {
                    nodeMapper = new DynamicNodeMapper <TObject, TContext>(_serializerRepository, PropertyMap);
                }
                else
                {
                    throw new SerializerNotFoundException(PropertyMap.PropertyType, typeof(TObject));
                }
            }
            else
            {
                nodeMapper = new XmlStaticMapper <TObject, TContext>(_serializerRepository, serializer, PropertyMap);
            }

            nodeMapper.MappingName = MappingName ?? PropertyMap.MappingName;

            return(nodeMapper);
        }