return new MapJoinImpl(parentCollection.getParentPath(), metamodel.managedType(parentCollection.getModel().getBindableJavaType()), metamodel, parentCollection.getJavaType(), internalCorrelate((FromImpl) parentCollection), parentCollection.getModel(), parentCollection.getJoinType(), (FromImpl) parentCollection);
}
protected org.eclipse.persistence.expressions.Expression internalCorrelate(FromImpl from){
org.eclipse.persistence.expressions.Expression expression = ((InternalSelection)from).getCurrentNode();
ExpressionBuilder builder = new ExpressionBuilder(expression.getBuilder().getQueryClass());
org.eclipse.persistence.expressions.Expression correlated = expression.rebuildOn(builder);
expression = expression.equal(correlated);
this.correlations.add(expression);
org.eclipse.persistence.expressions.Expression selectionCriteria = expression.and(this.subQuery.getSelectionCriteria());
this.subQuery.setSelectionCriteria(selectionCriteria);