private object ProcessArrayOrNewCollection(object collection, PersistentCollectionType collectionType)
        {
            if (collection == null)
            {
                return(null);
            }

            ICollectionPersister persister = Session.GetCollectionPersister(collectionType.Role);

            if (collectionType.IsArrayType)
            {
                ArrayHolder ah = Session.GetArrayHolder(collection);
                if (ah == null)
                {
                    ah = new ArrayHolder(Session, collection);
                    Session.AddNewCollection(ah, persister);
                    Session.AddArrayHolder(ah);
                }
                return(null);
            }
            else
            {
                PersistentCollection persistentCollection = collectionType.Wrap(Session, collection);
                Session.AddNewCollection(persistentCollection, persister);

                if (log.IsDebugEnabled)
                {
                    log.Debug("Wrapped collection in role: " + collectionType.Role);
                }

                return(persistentCollection);                //Force a substitution!
            }
        }