anchor.diff:      Iterable<String> ignorePackages,
       bool directDependencies = false,
     }) async {
  -    var root = await VizPackage.forDirectory(service, path);
  +    final rootPubspec = service.pubspecForDirectory(path);
   
       final packages = await Worker(service).getReferencedPackages(
         path,
  
positive.code:       directDependencies,
      );
  
      // want to make sure that the root node instance is the same
      // as the instance in the packages collection
      root = packages[root.name];
      assert(root != null);
  
      final value = VizRoot._(root, packages).._update();
  
      if (flagOutdated) {
        for (var dep in _allDeps(value, ignorePackages)) {
  
negative.code: import 'worker.dart';
  
  class VizRoot {
    final String rootPackageName;
    final Map<String, VizPackage> packages;
  
    VizRoot._(this.rootPackageName, Map<String, VizPackage> packages)
        : assert(packages.containsKey(rootPackageName)),
          packages = UnmodifiableMapView(packages);
  
    VizPackage get root => packages[rootPackageName];
  
    static Future<VizRoot> forDirectory(
      Service service,
  