private void doRecurse()

in maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/df/DfDependencyCollector.java [314:364]


    private void doRecurse(
            Args args,
            RequestTrace trace,
            Results results,
            List<RemoteRepository> repositories,
            DependencySelector depSelector,
            DependencyManager depManager,
            DependencyTraverser depTraverser,
            VersionFilter verFilter,
            Dependency d,
            ArtifactDescriptorResult descriptorResult,
            DefaultDependencyNode child) {
        DefaultDependencyCollectionContext context = args.collectionContext.get();
        args.collectionContext.compareAndSet(context, context.set(d, descriptorResult.getManagedDependencies()));
        context = args.collectionContext.get();

        DependencySelector childSelector = depSelector != null ? depSelector.deriveChildSelector(context) : null;
        DependencyManager childManager = depManager != null ? depManager.deriveChildManager(context) : null;
        DependencyTraverser childTraverser = depTraverser != null ? depTraverser.deriveChildTraverser(context) : null;
        VersionFilter childFilter = verFilter != null ? verFilter.deriveChildFilter(context) : null;

        final List<RemoteRepository> childRepos = args.ignoreRepos
                ? repositories
                : remoteRepositoryManager.aggregateRepositories(
                        args.session, repositories, descriptorResult.getRepositories(), true);

        Object key =
                args.pool.toKey(d.getArtifact(), childRepos, childSelector, childManager, childTraverser, childFilter);

        List<DependencyNode> children = args.pool.getChildren(key);
        if (children == null) {
            args.pool.putChildren(key, child.getChildren());

            args.nodes.push(child);

            process(
                    args,
                    trace,
                    results,
                    descriptorResult.getDependencies(),
                    childRepos,
                    childSelector,
                    childManager,
                    childTraverser,
                    childFilter);

            args.nodes.pop();
        } else {
            child.setChildren(children);
        }
    }