anchor.diff:  
     /**
      * Remove any diffs for files that are either (a) outside the given
  -   * [analysisRoots], or (b) are files that are not being analyzed by the server.
  -   */
  -  void filterDiffs(List<String> analysisRoots) {
  -    // TODO(brianwilkerson) Generalize this method by renaming the parameter and
  -    // passing in the glob patterns. (Or just pass in glob patterns.)
  +   * [inclusionPaths], or (b) are files that do not match one of the given
  +   * [globPatterns].
  +   */
  +  void filterDiffs(List<String> inclusionPaths, List<Glob> globPatterns) {
       diffRecords.retainWhere((DiffRecord record) {
         String filePath = record.srcPath ?? record.dstPath;
  -      for (String analysisRoot in analysisRoots) {
  -        if (path.isWithin(analysisRoot, filePath)) {
  -          // TODO(brianwilkerson) Generalize this by asking the server for the
  -          // list of glob patterns of files to be analyzed (once there's an API
  -          // for doing so).
  -          if (filePath.endsWith('.dart') ||
  -              filePath.endsWith('.html') ||
  -              filePath.endsWith('.htm') ||
  -              filePath.endsWith('.analysisOptions')) {
  -            return true;
  +      for (String inclusionPath in inclusionPaths) {
  +        if (path.isWithin(inclusionPath, filePath)) {
  +          for (Glob glob in globPatterns) {
  +            if (glob.matches(filePath)) {
  +              return true;
  +            }
             }
           }
         }
  
positive.code:   CommitDelta getCommitDiff(String srcCommit, String dstCommit) {
      // Consider --find-renames instead of --no-renames if rename information is
      // desired.
      ProcessResult result = _run(['diff', '--raw', '--no-abbrev', '--no-renames',
          '-z', srcCommit, dstCommit]);
      return new CommitDelta._(this, result.stdout);
    }
  
  
negative.code: }
  
  /**
   * Representation of a single diff hunk.
   */
  class DiffHunk {
  