anchor.diff:      // Move onto the next package if we've traversed all of these references.
       if (refs.isEmpty) return _traversePackage();
   
  +    // Pump the event loop to flatten the stack trace and workaround #9583.
  +    // If that bug is fixed, this can be Future.sync() instead.
       return new Future(() {
         var ref = refs.removeFirst();
   
  
positive.code:   /// Returns a string describing the dependency chain if it does, or `null` if
    /// there is no dependency.
    String _getDependencyPath(PackageId depender, String dependent) {
      var visited = new Set<String>();
      var resultPath;
      var currentPath = '${depender.name}';
  
      walkDeps(PackageId package) {
        if (visited.contains(package.name)) return false;
        visited.add(package.name);
  
        var pubspec = cache.getCachedPubspec(package);
        if (pubspec == null) return false;
  
        for (var dep in pubspec.dependencies) {
          var previousPath = currentPath;
          currentPath = '$currentPath -> ${dep.name}';
  
          if (dep.name == dependent) {
            resultPath = currentPath;
            return true;
          }
  
          var selected = getSelected(dep.name);
          // Ignore unselected dependencies. We haven't traversed into them yet,
          // so they can't affect backjumping.
          if (selected == null) continue;
  
          if (walkDeps(selected)) return true;
  
          currentPath = previousPath;
        }
  
        return false;
      }
  
      return walkDeps(depender) ? resultPath : null;
    }
  
    /// Logs [message] in the context of the current selected packages. If
  
negative.code:       if (_selected.isEmpty) {
          message = "* start at root";
        } else {
          var count = _selected.last.length;
          message = "* select ${_selected.last.first} ($count versions)";
        }
      } else {
        // Otherwise, indent it under the current selected package.
  