protected String getFindAssociationTargetEmbeddedValues(String relationshipType, AssociationKeyMetadata associationKeyMetadata) {
		StringBuilder queryBuilder = findAssociationPartialQuery( relationshipType, associationKeyMetadata );
		queryBuilder.append( "OPTIONAL MATCH (target) -[x*1..]->(e:EMBEDDED) " );
		// Should we split this in two Queries?
		queryBuilder.append( "RETURN id(target), extract(n IN x| type(n)), x, e ORDER BY id(target)" );
		return queryBuilder.toString();
	}
protected String getFindAssociationTargetEmbeddedValues ( String relationshipType , AssociationKeyMetadata associationKeyMetadata ) { StringBuilder queryBuilder = findAssociationPartialQuery ( relationshipType , associationKeyMetadata ) ; queryBuilder . append ( "OPTIONAL MATCH (target) -[x*1..]->(e:EMBEDDED) " ) ; queryBuilder . append ( "RETURN id(target), extract(n IN x| type(n)), x, e ORDER BY id(target)" ) ; return queryBuilder . toString ( ) ; }
/*
Example:

MATCH (owner:ENTITY:Car {`carId.maker`: {0}, `carId.model`: {1}}) <-[r:tires]- (target)
OPTIONAL MATCH (target) -[x*1..]->(e:EMBEDDED)
RETURN id(target), extract(n IN x| type(n)), x, e ORDER BY id(target)

or for embedded associations:

MATCH (owner:ENTITY:StoryGame {id: {0}}) -[:evilBranch]-> (:EMBEDDED) -[r:additionalEndings]-> (target:EMBEDDED)
OPTIONAL MATCH (target) -[x*1..]->(e:EMBEDDED)
RETURN id(target), extract(n IN x| type(n)), x, e ORDER BY id(target)