code: public Association getAssociation() {
  		if ( association == null ) {
  			AssociationKey key = getAssociationKey();
  
  			if ( hostingEntity != null ) {
  				OgmEntityEntryState entryState = OgmEntityEntryState.getStateFor( session, hostingEntity );
  				if ( entryState.hasAssociation( associationKeyMetadata.getCollectionRole() ) ) {
  					association = entryState.getAssociation( associationKeyMetadata.getCollectionRole() );
  				}
  				else {
  					association = gridDialect.getAssociation( key, getAssociationContext() );
  					OgmEntityEntryState.getStateFor( session, hostingEntity )
  							.setAssociation( associationKeyMetadata.getCollectionRole(), association );
  				}
  			}
  			else {
  				association = gridDialect.getAssociation( key, getAssociationContext() );
  			}
  
  			if ( association == null ) {
  				association = gridDialect.createAssociation( key, getAssociationContext() );
  				if ( hostingEntity != null ) {
  					OgmEntityEntryState.getStateFor( session, hostingEntity )
  							.setAssociation( associationKeyMetadata.getCollectionRole(), association );
  				}
  			}
  		}
  		return association;
  	}
docs: /*
  Load an association and create it if it is not found