package jetbrains.mps.lang.editor.typesystem;
/*Generated by MPS */
import java.util.List;
import org.jetbrains.mps.openapi.model.SNode;
import java.util.Set;
import org.jetbrains.mps.openapi.language.SAbstractConcept;
import jetbrains.mps.internal.collections.runtime.SetSequence;
import java.util.HashSet;
import java.util.ArrayList;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import jetbrains.mps.internal.collections.runtime.IVisitor;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
/*package*/ class DuplicationUtil {
/*package*/ static List<SNode> getDuplications(List<SNode> nodes) {
final Set<SAbstractConcept> childConcepts = SetSequence.fromSet(new HashSet<SAbstractConcept>());
final List<SNode> result = new ArrayList<SNode>();
ListSequence.fromList(nodes).visitAll(new IVisitor<SNode>() {
public void visit(SNode it) {
if (!(SetSequence.fromSet(childConcepts).contains(SNodeOperations.getConcept(it)))) {
SetSequence.fromSet(childConcepts).addElement(SNodeOperations.getConcept(it));
} else {
ListSequence.fromList(result).addElement(it);
}
}
});
return result;
}
}