public void HandleJoinedSubclass(PersistentClass model, HbmJoinedSubclass joinedSubclassMapping, IDictionary<string, MetaAttribute> inheritedMetas)
		{
			var subclass = new JoinedSubclass(model);

			BindClass(joinedSubclassMapping, subclass, inheritedMetas);
			inheritedMetas = GetMetas(joinedSubclassMapping, inheritedMetas, true); // get meta's from <joined-subclass>

			// joined subclass
			if (subclass.EntityPersisterClass == null)
				subclass.RootClazz.EntityPersisterClass = typeof(JoinedSubclassEntityPersister);

			//table + schema names
			string schema = joinedSubclassMapping.schema ?? mappings.SchemaName;
			string catalog = joinedSubclassMapping.catalog ?? mappings.CatalogName;

			// TODO: very strange, the schema does not support it
			//XmlAttribute actionNode = subnode.Attributes["schema-action"];
			//string action = actionNode == null ? "all" : actionNode.Value;
			string action = "all";

			Table mytable = mappings.AddTable(schema, catalog, GetClassTableName(subclass, joinedSubclassMapping.table), null, false, action);
			((ITableOwner)subclass).Table = mytable;

			log.InfoFormat("Mapping joined-subclass: {0} -> {1}", subclass.EntityName, subclass.Table.Name);

			// KEY
			BindKey(subclass, joinedSubclassMapping.key, mytable);

			subclass.CreatePrimaryKey(dialect);

			if (!subclass.IsJoinedSubclass)
				throw new MappingException(
					"Cannot map joined-subclass " + subclass.EntityName + " to table " +
						subclass.Table.Name + ", the same table as its base class.");

			subclass.CreateForeignKey();
			// CHECK
			mytable.AddCheckConstraint(joinedSubclassMapping.check);

			// properties
			new PropertiesBinder(mappings, subclass, dialect).Bind(joinedSubclassMapping.Properties, inheritedMetas);

			BindJoinedSubclasses(joinedSubclassMapping.JoinedSubclasses, subclass, inheritedMetas);

			model.AddSubclass(subclass);
			mappings.AddClass(subclass);
		}
		public void Bind(HbmJoinedSubclass joinedSubclassMapping, IDictionary<string, MetaAttribute> inheritedMetas)
		{
			PersistentClass superModel = GetSuperclass(joinedSubclassMapping.extends);
			HandleJoinedSubclass(superModel, joinedSubclassMapping, inheritedMetas);
		}
		private void AddJoinedSubclasses(HbmJoinedSubclass joinedSubclass,
		                                 IDictionary<string, MetaAttribute> inheritedMetas)
		{
			var binder = new JoinedSubclassBinder(Mappings, dialect);

			binder.Bind(joinedSubclass, inheritedMetas);
		}