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:     return rel == '.' ? replacer(to) : join(to, replacer(rel));
    }
  
    Future runCommand(String command, File file) async {
      final args = command.split(' ');
      final result = await Process.run(
          args.first,
          []
            ..addAll(args.skip(1))
            ..add(file.path));
      if (result.exitCode == 0) {
        stdout.write(result.stdout);
      } else {
        stderr.writeln(
            'Command `$command` failed on ${file.path}:\n${result.stderr}');
      }
    }
  
  
negative.code:       if (!identical(newContent, content)) {
          return new FileClone(file, newFile, () async {
            await newFile.parent.create(recursive: true);
            if (copyCommand != null && !await newFile.exists()) {
              await runCommand(copyCommand, [file, newFile]);
            } else if (editCommand != null && await newFile.exists()) {
              await runCommand(editCommand, [newFile]);
            }
            await newFile.writeAsString(newContent);
            if (addCommand != null) {
              await runCommand(addCommand, [newFile]);
            }
          }, newContent);
        }
  