docs: public static String getMainSidePropertyName(OgmCollectionPersister collectionPersister) {
  		if ( !collectionPersister.isInverse() ) {
  			return collectionPersister.getUnqualifiedRole();
  		}
  
  		Loadable mainSidePersister = (Loadable) collectionPersister.getElementPersister();
  
  		for ( int i = 0; i < mainSidePersister.getPropertyNames().length; i++ ) {
  			String candidateProperty = mainSidePersister.getPropertyNames()[i];
  			Type type = mainSidePersister.getPropertyType( candidateProperty );
  
  			// candidate is to-one association
  			if ( type.isEntityType() ) {
  				if ( Arrays.equals( collectionPersister.getKeyColumnNames(), mainSidePersister.getPropertyColumnNames( i ) ) ) {
  					return candidateProperty;
  				}
  			}
  			// candidate is to-many association
  			else if ( type.isCollectionType() ) {
  				OgmCollectionPersister mainSideCollectionPersister = getPersister( collectionPersister.getFactory(), (CollectionType) type );
  				if ( isCollectionMatching( mainSideCollectionPersister, collectionPersister ) ) {
  					return candidateProperty;
  				}
  			}
  		}
  
  		throw new HibernateException( "Couldn't determine main side role for collection " + collectionPersister.getRole() );
  	}