public ICompositeMapperBuilder AddComponent(PropertyData propertyData, string componentClassName)
        {
            if (Properties.ContainsKey(propertyData))
            {
                // This is needed for second pass to work properly in the components mapper
                return (ICompositeMapperBuilder) Properties[propertyData];
            }

            ICompositeMapperBuilder componentMapperBuilder;
            //todo: rk - not really reliable I think!
            if(componentClassName==null)
            {
                componentMapperBuilder = new DynamicComponentPropertyMapper(propertyData);
            }
            else
            {
                componentMapperBuilder = new ComponentPropertyMapper(propertyData, componentClassName);
            }

            AddComposite(propertyData, (IPropertyMapper) componentMapperBuilder);

            return componentMapperBuilder;
        }
        public ICompositeMapperBuilder AddComponent(PropertyData propertyData, string componentClassName)
        {
            if (Properties.ContainsKey(propertyData))
            {
                // This is needed for second pass to work properly in the components mapper
                return((ICompositeMapperBuilder)Properties[propertyData]);
            }

            ICompositeMapperBuilder componentMapperBuilder;

            //todo: rk - not really reliable I think!
            if (componentClassName == null)
            {
                componentMapperBuilder = new DynamicComponentPropertyMapper(propertyData);
            }
            else
            {
                componentMapperBuilder = new ComponentPropertyMapper(propertyData, componentClassName);
            }

            AddComposite(propertyData, (IPropertyMapper)componentMapperBuilder);

            return(componentMapperBuilder);
        }