void CategorizeProperty(ISessionFactory sessionfactory, IType prop, string name)
{
if (prop is ComponentType) {
Components.Add(name, new Model(sessionfactory, (ComponentType) prop));
} else if (prop is OneToOneType) {
OneToOnes.Add(name, (OneToOneType) prop);
} else if (prop is ManyToOneType) {
BelongsTos.Add(name, (ManyToOneType) prop);
} else if (prop is AnyType) {
Anys.Add(name, (AnyType) prop);
} else if (prop is CollectionType) {
var ctype = (CollectionType) prop;
var persister = sessionfactory.GetCollectionMetadata(ctype.Role) as ICollectionPersister;
if (persister == null) return;
if (persister.IsManyToMany) {
HasAndBelongsToManys.Add(name, new Collection(ctype, persister));
} else {
HasManys.Add(name, new Collection(ctype, persister));
}
} else {
Properties.Add(name, prop);
}
}