code: private Set<org.eclipse.aether.graph.DependencyNode> levelTraverseVerboseTreeList(
          Set<org.eclipse.aether.graph.DependencyNode>  nodeList, 
          List <org.eclipse.aether.graph.DependencyNode> aggDepNodeList,
          org.eclipse.aether.graph.DependencyNode rootNode) throws MojoExecutionException
    {
      // First remove duplicates in nodeList
      aggDepNodeList.removeAll(nodeList);
  
      aggDepNodeList.addAll(nodeList);
      
      Set<org.eclipse.aether.graph.DependencyNode> NodeChildList = 
          new LinkedHashSet<org.eclipse.aether.graph.DependencyNode>();
      
      for (org.eclipse.aether.graph.DependencyNode node : nodeList) {
        if (nodeArtifactsMatch(rootNode, node)){
          throw new MojoExecutionException("Circular dependency detected in project: " + getMavenProject().toString());
        }
        if ( (node != null) && (node.getChildren() != null) ) {
          NodeChildList.addAll(node.getChildren());
        }
      }
  
      return NodeChildList;
    }
docs: helper function for traversing nodes from the Aether package
  in Level-Order way.
  (copied/refactored from the levelTraverseTreeList method)
  
  @param nodeList {@link List} representing current breadth of nodes to be visited
  @param aggDepNodeList {@link List} representing aggregate nodes current breadth is added to.
  @param rootNode {@link org.eclipse.aether.graph.DependencyNode root node} of the project dependency tree used to check for circular dependencies.
  @return {@link List} of dependency nodes representing the next breadth to visit.
  @throws MojoExecutionException
  @since 3.5.2