anchor.diff:    ..addOption('edit-command',
         help:
             'Command to run on existing files. The path of the file is appended to the command')
  +  ..addOption('copy-command',
  +      help:
  +          'Command to run on each old/new file pair, to initiate a copy. The path of the files is appended to the command')
     ..addOption('add-command',
         help:
             'Command to run on added files. The path of the file is appended to the command')
  +  ..addOption('final-command',
  +      help:
  +          'Command to run on all output files at the end. The path of the all the files is appended to the command')
     ..addFlag('inflections',
         negatable: true,
         defaultsTo: true,
  
positive.code:       if (!identical(newContent, content)) {
          return new FileClone(file, newFile, () async {
            await newFile.parent.create(recursive: true);
            if (editCommand != null && await newFile.exists()) {
              await runCommand(editCommand, newFile);
            }
            await newFile.writeAsString(newContent);
            if (addCommand != null) {
              await runCommand(addCommand, newFile);
            }
          }, newContent);
        }
  
negative.code:   if (dryRun) return;
  
    await Future.wait(clones.map((c) => c.perform()));
  
    if (finalCommand != null) {
      await runCommand(finalCommand, clones.map((c) => c.destination).toList());
    }
  }
  
  printClones(List<FileClone> clones) {
  