anchor.diff:    await _analyzeProject(dir.path);
   }
   
  -Future<void> _analyzeProject(String workingDir) async {
  +Future<void> _ensureFlutterToolsSnapshot() async {
     final String flutterToolsPath = fs.path.absolute(fs.path.join(
       'bin',
       'flutter_tools.dart',
     ));
  +  final String flutterToolsSnapshotPath = fs.path.absolute(fs.path.join(
  +    '..',
  +    '..',
  +    'bin',
  +    'cache',
  +    'flutter_tools.snapshot',
  +  ));
  +  final String dotPackages = fs.path.absolute(fs.path.join(
  +    '.packages',
  +  ));
  +
  +  final File snapshotFile = fs.file(flutterToolsSnapshotPath);
  +  if (snapshotFile.existsSync()) {
  +    snapshotFile.renameSync(flutterToolsSnapshotPath + '.bak');
  +  }
  +
  +  final List<String> snapshotArgs = <String>[
  +    ...dartVmFlags,
  +    '--snapshot=$flutterToolsSnapshotPath',
  +    '--packages=$dotPackages',
  +    flutterToolsPath,
  +  ];
  +  final ProcessResult snapshotResult = await Process.run(
  +    '../../bin/cache/dart-sdk/bin/dart',
  +    snapshotArgs,
  +  );
  +  if (snapshotResult.exitCode != 0) {
  +    print(snapshotResult.stdout);
  +    print(snapshotResult.stderr);
  +  }
  +  expect(snapshotResult.exitCode, 0);
  +}
  +
  +Future<void> _restoreFlutterToolsSnapshot() async {
  +  final String flutterToolsSnapshotPath = fs.path.absolute(fs.path.join(
  +    '..',
  +    '..',
  +    'bin',
  +    'cache',
  +    'flutter_tools.snapshot',
  +  ));
  +
  +  final File snapshotBackup = fs.file(flutterToolsSnapshotPath + '.bak');
  +  if (!snapshotBackup.existsSync()) {
  +    // No backup to restore.
  +    return;
  +  }
  +
  +  snapshotBackup.renameSync(flutterToolsSnapshotPath);
  +}
  +
  +Future<void> _analyzeProject(String workingDir) async {
  +  final String flutterToolsSnapshotPath = fs.path.absolute(fs.path.join(
  +    '..',
  +    '..',
  +    'bin',
  +    'cache',
  +    'flutter_tools.snapshot',
  +  ));
   
     final List<String> args = <String>[
       ...dartVmFlags,
  -    flutterToolsPath,
  +    flutterToolsSnapshotPath,
       'analyze',
     ];
   
  
positive.code: }
  
  Future<void> _runFlutterTest(Directory workingDir, { String target }) async {
    final String flutterToolsPath = fs.path.absolute(fs.path.join(
      'bin',
      'flutter_tools.dart',
    ));
  
    // While flutter test does get packages, it doesn't write version
  
negative.code: 
    final List<String> args = <String>[
      ...dartVmFlags,
      flutterToolsSnapshotPath,
      'test',
      '--no-color',
      if (target != null) target,
  