anchor.diff:    try {
       var client = new IOClient();
   
  -    Stream stream;
       try {
  -      stream = await downloadPackage(packageName, client);
  +      var info = await getPackageInfo(packageName, client);
   
  -      log.info('Extracting to ${tempDir.path}');
  -      await extractTarGz(stream, tempDir.path);
  -      log.info('Extracted to ${tempDir.path}');
  +      var latest = info['latest'];
  +
  +      var version = latest['version'];
  +      log.info('Version $version');
  +
  +      var archiveUri = Uri.parse(latest['archive_url']);
  +
  +      await downloadAndExtract(tempDir.path, archiveUri, client);
       } finally {
         client.close();
       }
  
positive.code:         uri: archiveUri);
    }
  
    return streamedResponse.stream;
  }
  
  Future<Summary> analyze(String projectDir, {bool strong}) async {
    // find all dart files in 'lib' directory
    var dir = new Directory(projectDir).absolute;
    projectDir = dir.path;
  
negative.code:   }
  }
  
  Future<Map> getPackageInfo(String packageName, Client client) async {
    var pkgUri = 'https://pub.dartlang.org/api/packages/$packageName';
    log.info('Downloading $pkgUri');
  
    var response = await client.read(pkgUri);
  
    return JSON.decode(response);
  }
  
  Future<Null> downloadAndExtract(
      String tempDir, Uri archiveUri, Client client) async {
    log.info('Downloading $archiveUri');
    assert(archiveUri.toString().endsWith('.tar.gz'));
  
  