in maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/traverser/AndDependencyTraverser.java [107:146]
public DependencyTraverser deriveChildTraverser(DependencyCollectionContext context) {
requireNonNull(context, "context cannot be null");
int seen = 0;
Set<DependencyTraverser> childTraversers = null;
for (DependencyTraverser traverser : traversers) {
DependencyTraverser childTraverser = traverser.deriveChildTraverser(context);
if (childTraversers != null) {
if (childTraverser != null) {
childTraversers.add(childTraverser);
}
} else if (traverser != childTraverser) {
childTraversers = new LinkedHashSet<>();
if (seen > 0) {
for (DependencyTraverser s : traversers) {
if (childTraversers.size() >= seen) {
break;
}
childTraversers.add(s);
}
}
if (childTraverser != null) {
childTraversers.add(childTraverser);
}
} else {
seen++;
}
}
if (childTraversers == null) {
return this;
}
if (childTraversers.size() <= 1) {
if (childTraversers.isEmpty()) {
return null;
}
return childTraversers.iterator().next();
}
return new AndDependencyTraverser(childTraversers);
}