anchor.diff:    }
   }
   
  +/**
  + * A set of packages.
  + */
   class PackagesInfo {
     final List<PackageInfo> packages;
   
  
positive.code: 
    Directory get cacheDir => _cacheDir;
  
    String get version {
      ProcessResult result = Process.runSync('pub', ['--version']);
      return result.stdout.trim();
    }
  
    Future<PackagesInfo> resolvePackages(List<String> packages) {
      Directory tempDir = Directory.systemTemp.createTempSync(
          /* prefix: */ 'temp_package');
  
negative.code: 
  Logger _logger = new Logger('pub');
  
  /**
   * This class has two general functions:
   *
   * Given a list of packages, resolve the list to the full transitive set of
   * referenced packages and their versions. This uses an implicit `any`
   * constraint. It will resolve to the lastest non-dev versions that satisfy
   * their mutual constraints.
   *
   * And, given a package and a version, it can return a local directory with the
   * contents of the package's `lib/` folder. This will download the
   * package+version from pub.dartlang.org and store it in a disk cache. As the
   * cache is populated the cost of asking for a package's `lib/` folder contents
   * will go to zero.
   *
   */
  class Pub {
    Directory _cacheDir;
  
  