public ComponentAsIdMapper(System.Type componentType, MemberInfo declaringTypeMember, HbmCompositeId id, HbmMapping mapDoc)
		{
			this.id = id;
			this.mapDoc = mapDoc;
			id.@class = componentType.GetShortClassName(mapDoc);
			accessorPropertyMapper = new AccessorPropertyMapper(declaringTypeMember.DeclaringType, declaringTypeMember.Name, x => id.access = x);
		}
		public ComponentMapper(HbmComponent component, System.Type componentType, IAccessorPropertyMapper accessorMapper, HbmMapping mapDoc)
			: base(componentType, mapDoc)
		{
			_component = component;
			_component.@class = componentType.GetShortClassName(mapDoc);
			_accessorPropertyMapper = accessorMapper;
		}
		public void Class(System.Type entityType)
		{
			if (!_member.GetPropertyOrFieldType().IsAssignableFrom(entityType))
			{
				throw new ArgumentOutOfRangeException("entityType", 
					String.Format("The type is incompatible; expected assignable to {0}", _member.GetPropertyOrFieldType()));
			}
			_manyToOne.@class = entityType.GetShortClassName(_mapDoc);
		}
		public void Class(System.Type entityType)
		{
			if (!collectionElementType.IsAssignableFrom(entityType))
			{
				throw new ArgumentOutOfRangeException("entityType",
				                                      string.Format("The type is incompatible; expected assignable to {0}",
				                                                    collectionElementType));
			}
			oneToManyMapping.@class = entityType.GetShortClassName(mapDoc);
		}
		public void Class(System.Type componentType)
		{
			id.@class = componentType.GetShortClassName(mapDoc);
		}
		public void Class(System.Type componentConcreteType)
		{
			_component.@class = componentConcreteType.GetShortClassName(_mapDoc);
		}
		public ComponentMapKeyMapper(System.Type componentType, HbmCompositeMapKey component, HbmMapping mapDoc)
		{
			this.component = component;
			this.mapDoc = mapDoc;
			component.@class = componentType.GetShortClassName(mapDoc);
		}