in src/main/java/org/jetbrains/jetCheck/StructureNode.java [216:230]
StructureNode removeUnneeded(Set<NodeId> unneeded) {
List<StructureElement> replaced = new ArrayList<>(children.size());
boolean changed = false;
for (StructureElement child : children) {
if (unneeded.contains(child.id)) {
return copyWithChildren(replaced);
}
StructureElement removed = child.removeUnneeded(unneeded);
if (removed != child) {
changed = true;
}
replaced.add(removed);
}
return changed ? copyWithChildren(replaced) : this;
}