code: protected function printTree($results, $prefix = '', $level = 1)
      {
          $count = count($results);
          $idx = 0;
          foreach ($results as $result) {
              /**
               * @var PackageInterface $package
               * @var Link             $link
               * @var array|bool       $children
               */
              list($package, $link, $children) = $result;
  
              $color = $this->colors[$level % count($this->colors)];
              $prevColor = $this->colors[($level - 1) % count($this->colors)];
              $isLast = (++$idx == $count);
              $versionText = (strpos($package->getPrettyVersion(), 'No version set') === 0) ? '' : $package->getPrettyVersion();
              $packageText = rtrim(sprintf('<%s>%s</%1$s> %s', $color, $package->getPrettyName(), $versionText));
              $linkText = sprintf('%s <%s>%s</%2$s> %s', $link->getDescription(), $prevColor, $link->getTarget(), $link->getPrettyConstraint());
              $circularWarn = $children === false ? '(circular dependency aborted here)' : '';
              $this->writeTreeLine(rtrim(sprintf("%s%s%s (%s) %s", $prefix, $isLast ? '└──' : '├──', $packageText, $linkText, $circularWarn)));
              if ($children) {
                  $this->printTree($children, $prefix . ($isLast ? '   ' : '│  '), $level + 1);
              }
          }
      }
docs: Recursively prints a tree of the selected results.
  
  @param array  $results Results to be printed at this level.
  @param string $prefix  Prefix of the current tree level.
  @param int    $level   Current level of recursion.