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; } }