code: public static Reporter fileLauncherWithoutInteraction() {
          final String cmd = new CrossPlatformCommand<String>() {
  
              @Override
              protected String onWindows() {
                  return "cmd /C start";
              }
  
              @Override
              protected String onMac() {
                  return "open";
              }
  
              @Override
              protected String onUnix() {
                  return "xdg-open";
              }
  
          }.execute();
  
          return new ExecutableDifferenceReporter(cmd, cmd, null) {
              @Override
              protected String[] buildApproveNewCommand(File approvalDestination, File fileForVerification) {
                  return new String[]{getApprovalCommand(), approvalDestination.getAbsolutePath()};
              }
  
              @Override
              protected String[] buildNotTheSameCommand(File fileForVerification, File fileForApproval) {
                  return new String[]{getDiffCommand(), fileForApproval.getAbsolutePath()};
              }
          };
      }
docs: Same as {@link #fileLauncher} but doesn't do the swing interaction after it opens the file. This is mostly used to reuse the logic
  of file launching without adding the burden for prompting the user after that.
  
  @return a reporter that launches the file