docs: public boolean confirmUninstallChanges(Component parent, UninstallationResult result, Set<AddOn> addOnsBeingDownloaded) {
  
          Set<AddOn> forcedUninstallations = new HashSet<>(result.getUninstallations());
          forcedUninstallations.removeAll(result.getSelectedAddOns());
  
          boolean dependencyDownloadFound = false;
          for (AddOn addOnDownloading : addOnsBeingDownloaded) {
              if (containsAny(addOnDownloading.getIdsAddOnDependencies(), forcedUninstallations)) {
                  dependencyDownloadFound = true;
                  break;
              }
          }
  
          if (!dependencyDownloadFound) {
              for (AddOn addOnDownloading : addOnsBeingDownloaded) {
                  if (containsAny(addOnDownloading.getIdsAddOnDependencies(), result.getSelectedAddOns())) {
                      dependencyDownloadFound = true;
                      break;
                  }
              }
          }
  
          if (dependencyDownloadFound) {
              if (JOptionPane.showConfirmDialog(
                      parent,
                      new Object[] {
                              Constant.messages.getString("cfu.confirmation.dialogue.message.uninstallsRequiredByAddOnsDownloading"),
                              Constant.messages.getString("cfu.confirmation.dialogue.message.continueWithUninstallation") },
                      Constant.PROGRAM_NAME,
                      JOptionPane.YES_NO_OPTION) != JOptionPane.YES_OPTION) {
                  return false;
              }
          }
  
          if (forcedUninstallations.isEmpty() && result.getExtensions().isEmpty()) {
              return JOptionPane.showConfirmDialog(
                      parent,
                      Constant.messages.getString("cfu.uninstall.confirm"),
                      Constant.PROGRAM_NAME,
                      JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
          }
  
          if (result.getExtensions().isEmpty()) {
              return JOptionPane.showConfirmDialog(
                      parent,
                      new Object[] {
                              Constant.messages.getString("cfu.uninstall.dependentAddOns.confirm"),
                              createScrollableTable(new AddOnTableModel(forcedUninstallations, false)),
                              Constant.messages.getString("cfu.confirmation.dialogue.message.continueWithUninstallation") },
                      Constant.PROGRAM_NAME,
                      JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
          }
  
          if (forcedUninstallations.isEmpty()) {
              return JOptionPane.showConfirmDialog(
                      parent,
                      new Object[] {
                              Constant.messages.getString("cfu.uninstall.dependentExtensions.confirm"),
                              createScrollableTable(new ExtensionsTableModel(result.getExtensions())),
                              Constant.messages.getString("cfu.confirmation.dialogue.message.continueWithUninstallation") },
                      Constant.PROGRAM_NAME,
                      JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
          }
  
          JPanel panel = new JPanel(new BorderLayout());
          JTabbedPane tabs = new JTabbedPane();
          panel.add(tabs);
  
          tabs.add(
                  Constant.messages.getString("cfu.confirmation.dialogue.tab.header.uninstallations"),
                  createScrollableTable(new AddOnTableModel(forcedUninstallations, false)));
  
          tabs.add(
                  Constant.messages.getString("cfu.confirmation.dialogue.tab.header.extensionUnloads"),
                  createScrollableTable(new ExtensionsTableModel(result.getExtensions())));
  
          List<Object> optionPaneContents = new ArrayList<>();
          optionPaneContents.add(Constant.messages.getString("cfu.uninstall.dependentAddonsAndExtensions.confirm"));
          optionPaneContents.add(panel);
          optionPaneContents.add(Constant.messages.getString("cfu.confirmation.dialogue.message.continueWithUninstallation"));
  
          return JOptionPane.showConfirmDialog(
                  parent,
                  optionPaneContents.toArray(),
                  Constant.PROGRAM_NAME,
                  JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
      }