in src/main/java/org/apache/commons/configuration2/tree/ReferenceTracker.java [115:150]
public ReferenceTracker updateReferences(final Map<ImmutableNode, ImmutableNode> replacedNodes, final Collection<ImmutableNode> removedNodes) {
if (!references.isEmpty()) {
Map<ImmutableNode, Object> newRefs = null;
for (final Map.Entry<ImmutableNode, ImmutableNode> e : replacedNodes.entrySet()) {
final Object ref = references.get(e.getKey());
if (ref != null) {
if (newRefs == null) {
newRefs = new HashMap<>(references);
}
newRefs.put(e.getValue(), ref);
newRefs.remove(e.getKey());
}
}
List<Object> newRemovedRefs = newRefs != null ? new LinkedList<>(removedReferences) : null;
for (final ImmutableNode node : removedNodes) {
final Object ref = references.get(node);
if (ref != null) {
if (newRefs == null) {
newRefs = new HashMap<>(references);
}
newRefs.remove(node);
if (newRemovedRefs == null) {
newRemovedRefs = new LinkedList<>(removedReferences);
}
newRemovedRefs.add(ref);
}
}
if (newRefs != null) {
return new ReferenceTracker(newRefs, newRemovedRefs);
}
}
return this;
}