in src/main/java/org/apache/maven/plugins/shade/pom/MavenJDOMWriter.java [926:957]
protected void replaceXpp3DOM(Element parent, Xpp3Dom parentDom, Counter counter) {
if (parentDom.getChildCount() > 0) {
Xpp3Dom[] childs = parentDom.getChildren();
Collection<Xpp3Dom> domChilds = new ArrayList<>();
Collections.addAll(domChilds, childs);
// int domIndex = 0;
for (Element elem : parent.getChildren()) {
Xpp3Dom corrDom = null;
for (Xpp3Dom dm : domChilds) {
if (dm.getName().equals(elem.getName())) {
corrDom = dm;
break;
}
}
if (corrDom != null) {
domChilds.remove(corrDom);
replaceXpp3DOM(elem, corrDom, new Counter(counter.getDepth() + 1));
counter.increaseCount();
} else {
parent.removeContent(elem);
}
}
for (Xpp3Dom dm : domChilds) {
Element elem = factory.element(dm.getName(), parent.getNamespace());
insertAtPreferredLocation(parent, elem, counter);
counter.increaseCount();
replaceXpp3DOM(elem, dm, new Counter(counter.getDepth() + 1));
}
} else if (parentDom.getValue() != null) {
parent.setText(parentDom.getValue());
}
}