anchor.diff:      await _unselected.add(id.toRef());
   
       for (var dep in await _solver.depsFor(id)) {
  -      var deps = getDependencies(dep.name);
  +      var deps = getDependenciesOn(dep.name);
         deps.removeLast();
   
         if (deps.isEmpty) {
  
positive.code: 
    /// Returns a string description of the dependencies on [name].
    String describeDependencies(String name) =>
        getDependencies(name).map((dep) => "  $dep").join('\n');
  
    /// Gets the list of known dependencies on package [name].
    ///
    /// Creates an empty list if needed.
    List<Dependency> getDependencies(String name) =>
        _dependencies.putIfAbsent(name, () => <Dependency>[]);
  }
  
negative.code:   /// can have a bunch of dependencies back onto the root package as long as
    /// they all agree with each other.
    Dependency getRequiredDependency(String name) {
      return getDependenciesOn(name)
          .firstWhere((dep) => !dep.dep.isRoot, orElse: () => null);
    }
  
    /// Gets the combined [VersionConstraint] currently placed on package [name].
    VersionConstraint getConstraint(String name) {
      var constraint = getDependenciesOn(name)
          .map((dep) => dep.dep.constraint)
          .fold(VersionConstraint.any, (a, b) => a.intersect(b));
  
  