@Override
  public DependencyGraphNode next() {
    if (!hasNext()) {
      throw new NoSuchElementException();
    }

    DependencyGraphNode nextNode = dependencyGraphNodes.peek().removeFirst();

    dependencyGraphNodes.push(new LinkedList<>(nextNode.getDependencies()));

    visitedNodes.add(nextNode);

    return nextNode;
  }