anchor.diff:  }
   
   /// Scans every file in [files] and reports the time spent doing so.
  -void scanFiles(Set<Source> files) {
  +void scanFiles<T>(Set<T> files, void Function(T) scannerFunction) {
     // `tokenize` records how many chars are scanned and how long it takes to scan
     // them. As this function is called repeatedly when running as a benchmark, we
     // make sure to clear the data and compute it again every time.
     scanTimer = new Stopwatch();
     for (var source in files) {
  -    tokenize(source);
  +    scannerFunction(source);
     }
   
     report('scan', scanTimer.elapsedMicroseconds);
  
positive.code:   return files;
  }
  
  /// Sets up analyzer to be able to load and resolve app, packages, and sdk
  /// sources.
  void setup(String path) {
  
negative.code: /// outlines).
  library front_end.tool.perf;
  
  import 'dart:convert';
  import 'dart:io' show Directory, File, Platform, exit;
  import 'dart:typed_data';
  
  import 'package:_fe_analyzer_shared/src/scanner/scanner.dart';
  import 'package:analyzer/dart/analysis/features.dart';
  