public static void processFiles(File source, File dest) throws Exception {
    write(
        "Mutating "
            + FileSystemManager.getAbsolutePath(source)
            + " to "
            + FileSystemManager.getAbsolutePath(dest));
    if (!FileSystemManager.exists(source)) {
      write("   ERROR : " + FileSystemManager.getAbsolutePath(source) + " does not exist.");
      return;
    }

    FileTool.getInstance().createDir(FileSystemManager.getParentFile(dest));
    long length = FileSystemManager.length(source);
    byte[] buff = new byte[1024];
    double proba = 4.0 / length * buff.length;

    InputStream in = null;
    OutputStream out = null;
    boolean eq = true;
    try {
      in = FileSystemManager.getFileInputStream(source);
      out = FileSystemManager.getFileOutputStream(dest);

      int l;
      long position = 0;
      while ((l = in.read(buff)) != -1) {
        out.write(mutate(buff, l, proba, position++));
      }
    } finally {
      in.close();
      out.close();
    }
    if (eq) {
      write("   Mutation completed.");
    }
  }