anchor.diff:  
     return Process.run('dart', theArgs);
   }
  +
  +Future _analyzePackage(String rootDir, String libName, String libVer) {
  +
  +  var libraryPaths = _getLibraryPaths(rootDir, libName, libVer);
  +
  +  expect(libraryPaths, hasLength(6));
  +
  +  final packageDir = pathos.join(rootDir, 'dart_${libName}_${libVer}_api_client');
  +
  +  logMessage('installing packages at $packageDir');
  +
  +  return Process.run('pub', ['install'], workingDirectory: packageDir)
  +      .then((ProcessResult pr) {
  +        logMessage('pub install worked');
  +
  +        final packagesDir = pathos.join(packageDir, 'packages');
  +
  +        return Future.forEach(libraryPaths, (path) {
  +          return _analyzeLib(packagesDir, path);
  +        });
  +      });
  +}
  +
  +Future _analyzeLib(String packageDir, String libPath) {
  +  logMessage('analyzing $libPath');
  +
  +  var args = ['--package-root', packageDir, libPath];
  +
  +  return Process.run('dartanalyzer', args)
  +      .then((ProcessResult pr) {
  +        expect(pr.exitCode, 0);
  +        logMessage('analyze completed');
  +      });
  +}
  
positive.code:     .map((k) => '${name}_${k}.dart'));
  
    return files
        .map((f) => pathos.join(packageDir, libDir, f))
        .toList(growable: false);
  }
  
  
negative.code:   });
  }
  
  List<String> _getLibraryPaths(String rootDir, String libName, String libVersion) {
    final name = '${libName}_${libVersion}_api';
    final libDir = 'dart_${name}_client/lib';
  
  