code: private static void appendOptionalMatchOwnerEmbeddedNodes(StringBuilder queryBuilder) {
  		queryBuilder.append( " OPTIONAL MATCH (" );
  		queryBuilder.append( ENTITY_ALIAS );
  		queryBuilder.append( ") -[" );
  		queryBuilder.append( FIRST_EMBEDDED_REL_ALIAS );
  		queryBuilder.append( "]->(" );
  		queryBuilder.append( FIRST_EMBEDDED_ALIAS );
  		queryBuilder.append( ":" );
  		queryBuilder.append( NodeLabel.EMBEDDED );
  		queryBuilder.append( ")" );
  		queryBuilder.append( " OPTIONAL MATCH (" );
  		queryBuilder.append( FIRST_EMBEDDED_ALIAS );
  		queryBuilder.append( ")-[" );
  		queryBuilder.append( EMBEDDED_REL_ALIAS );
  		queryBuilder.append( "*]->(" );
  		queryBuilder.append( EMBEDDED_ALIAS );
  		queryBuilder.append( ":" );
  		queryBuilder.append( NodeLabel.EMBEDDED );
  		queryBuilder.append( ")" );
  	}
docs: /*
  Looks something like:
  
  OPTIONAL MATCH (owner)-[r]->(emb)
  OPTIONAL MATCH (emb)-[r2*]->(emb_2)
  
  The reason we make this split to the path towards the embedded nodes is
  to make the query faster.