in maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/selector/AndDependencySelector.java [105:144]
public DependencySelector deriveChildSelector(DependencyCollectionContext context) {
requireNonNull(context, "context cannot be null");
int seen = 0;
Set<DependencySelector> childSelectors = null;
for (DependencySelector selector : selectors) {
DependencySelector childSelector = selector.deriveChildSelector(context);
if (childSelectors != null) {
if (childSelector != null) {
childSelectors.add(childSelector);
}
} else if (selector != childSelector) {
childSelectors = new LinkedHashSet<>();
if (seen > 0) {
for (DependencySelector s : selectors) {
if (childSelectors.size() >= seen) {
break;
}
childSelectors.add(s);
}
}
if (childSelector != null) {
childSelectors.add(childSelector);
}
} else {
seen++;
}
}
if (childSelectors == null) {
return this;
}
if (childSelectors.size() <= 1) {
if (childSelectors.isEmpty()) {
return null;
}
return childSelectors.iterator().next();
}
return new AndDependencySelector(childSelectors);
}