docs: private static Object getAssociationRows(Association association, AssociationKey key, AssociationContext associationContext) {
  		boolean organizeByRowKey = DotPatternMapHelpers.organizeAssociationMapByRowKey( association, key, associationContext );
  
  		// transform map entries such as ( addressType='home', address_id=123) into the more
  		// natural ( { 'home'=123 }
  		if ( organizeByRowKey ) {
  			String rowKeyColumn = organizeByRowKey ? key.getMetadata().getRowKeyIndexColumnNames()[0] : null;
  			Document rows = new Document();
  
  			for ( RowKey rowKey : association.getKeys() ) {
  				Document row = (Document) getAssociationRow( association.get( rowKey ), key );
  
  				String rowKeyValue = (String) row.remove( rowKeyColumn );
  
  				// if there is a single column on the value side left, unwrap it
  				if ( row.keySet().size() == 1 ) {
  					rows.put( rowKeyValue, DocumentUtil.toMap( row ).values().iterator().next() );
  				}
  				else {
  					rows.put( rowKeyValue, row );
  				}
  			}
  
  			return rows;
  		}
  		// non-map rows can be taken as is
  		else {
  			List<Object> rows = new ArrayList<>();
  
  			for ( RowKey rowKey : association.getKeys() ) {
  				rows.add( getAssociationRow( association.get( rowKey ), key ) );
  			}
  
  			return rows;
  		}
  	}