docs: private void createRelationshipforCollectionOfComponents(AssociationKey associationKey, String collectionRole, String[] embeddedColumnNames, Object[] embeddedColumnValues, StringBuilder queryBuilder) {
  		int offset = associationKey.getEntityKey().getColumnNames().length;
  		EmbeddedNodesTree tree = createEmbeddedTree( collectionRole, embeddedColumnNames, embeddedColumnValues, offset );
  		if ( isPartOfEmbedded( collectionRole ) ) {
  			String[] pathToEmbedded = appendEmbeddedNodes( collectionRole, queryBuilder );
  			queryBuilder.append( " CREATE (e) -[r:" );
  			appendRelationshipType( queryBuilder, pathToEmbedded[ pathToEmbedded.length - 1] );
  		}
  		else {
  			queryBuilder.append( " CREATE (owner) -[r:" );
  			appendRelationshipType( queryBuilder, collectionRole );
  		}
  		queryBuilder.append( "]-> " );
  		queryBuilder.append( "(target:" );
  		queryBuilder.append( EMBEDDED );
  		queryBuilder.append( ":" );
  		escapeIdentifier( queryBuilder, associationKey.getMetadata().getAssociatedEntityKeyMetadata().getEntityKeyMetadata().getTable() );
  		int index = 0;
  		int embeddedNumber = 0;
  
  		// Append primitive properties
  		if ( !tree.getProperties().isEmpty() ) {
  			queryBuilder.append( " {" );
  			for ( EmbeddedNodeProperty property : tree.getProperties() ) {
  				escapeIdentifier( queryBuilder, property.getColumn() );
  				queryBuilder.append( ": {" );
  				queryBuilder.append( property.getParam() );
  				queryBuilder.append( "}" );
  				if ( index++ < tree.getProperties().size() - 1 ) {
  					queryBuilder.append( ", " );
  				}
  			}
  			queryBuilder.append( "}" );
  		}
  		queryBuilder.append( ")" );
  
  		// Append relationships representing embedded properties
  		Map<String, EmbeddedNodesTree> children = tree.getChildren();
  		boolean first = true;
  		for ( Entry<String, EmbeddedNodesTree> entry : children.entrySet() ) {
  			index = 0;
  			String relationshipType = entry.getKey();
  			EmbeddedNodesTree child = entry.getValue();
  			if ( first ) {
  				first = false;
  			}
  			else {
  				queryBuilder.append( ", (target)" );
  			}
  			queryBuilder.append( " - [:" );
  			appendRelationshipType( queryBuilder, relationshipType );
  			queryBuilder.append( "] -> " );
  			queryBuilder.append( "(a" );
  			queryBuilder.append( embeddedNumber++ );
  			queryBuilder.append( ":" );
  			queryBuilder.append( EMBEDDED );
  			if ( !child.getProperties().isEmpty() ) {
  				queryBuilder.append( " {" );
  				for ( EmbeddedNodeProperty property : child.getProperties() ) {
  					escapeIdentifier( queryBuilder, property.getColumn() );
  					queryBuilder.append( ": {" );
  					queryBuilder.append( property.getParam() );
  					queryBuilder.append( "}" );
  					if ( index++ < child.getProperties().size() - 1 ) {
  						queryBuilder.append( ", " );
  					}
  				}
  				queryBuilder.append( "}" );
  			}
  			queryBuilder.append( ")" );
  		}
  		queryBuilder.append( " RETURN r" );
  	}