docs: private void readCollectionElement(
  		final Object optionalOwner,
  		final Serializable optionalKey,
  		final CollectionPersister persister,
  		final CollectionAliases descriptor,
  		final ResultSet rs,
  		final SharedSessionContractImplementor session)
  				throws HibernateException, SQLException {
  
  		final PersistenceContext persistenceContext = session.getPersistenceContext();
  
  		//implement persister.readKey using the grid type (later)
  		final Serializable collectionRowKey = (Serializable) persister.readKey(
  				rs,
  				descriptor.getSuffixedKeyAliases(),
  				session
  		);
  
  		if ( collectionRowKey != null ) {
  			// we found a collection element in the result set
  
  			if ( log.isDebugEnabled() ) {
  				log.debug(
  						"found row of collection: " +
  						MessageHelper.collectionInfoString( persister, collectionRowKey, getFactory() )
  					);
  			}
  
  			Object owner = optionalOwner;
  			if ( owner == null ) {
  				owner = persistenceContext.getCollectionOwner( collectionRowKey, persister );
  				if ( owner == null ) {
  					//TODO: This is assertion is disabled because there is a bug that means the
  					//	  original owner of a transient, uninitialized collection is not known
  					//	  if the collection is re-referenced by a different object associated
  					//	  with the current Session
  					//throw new AssertionFailure("bug loading unowned collection");
  				}
  			}
  
  			PersistentCollection rowCollection = persistenceContext.getLoadContexts()
  					.getCollectionLoadContext( rs )
  					.getLoadingCollection( persister, collectionRowKey );
  
  			if ( rowCollection != null ) {
  				hydrateRowCollection( persister, descriptor, rs, owner, rowCollection );
  			}
  
  		}
  		else if ( optionalKey != null ) {
  			// we did not find a collection element in the result set, so we
  			// ensure that a collection is created with the owner's identifier,
  			// since what we have is an empty collection
  
  			if ( log.isDebugEnabled() ) {
  				log.debug(
  						"result set contains (possibly empty) collection: " +
  						MessageHelper.collectionInfoString( persister, optionalKey, getFactory() )
  					);
  			}
  
  			persistenceContext.getLoadContexts()
  					.getCollectionLoadContext( rs )
  					.getLoadingCollection( persister, optionalKey ); // handle empty collection
  
  		}
  
  		// else no collection element, but also no owner
  
  	}