code: public static boolean softUninstall(AddOn addOn, AddOnUninstallationProgressCallback callback) {
          Validate.notNull(addOn, "Parameter addOn must not be null.");
          validateCallbackNotNull(callback);
  
          try {
              boolean uninstalledWithoutErrors = true;
              uninstalledWithoutErrors &= uninstallAddOnPassiveScanRules(addOn, callback);
              uninstalledWithoutErrors &= uninstallAddOnActiveScanRules(addOn, callback);
              uninstalledWithoutErrors &= uninstallAddOnExtensions(addOn, callback);
  
              return uninstalledWithoutErrors;
          } catch (Throwable e) {
              logger.error("An error occurred while uninstalling the add-on: " + addOn.getId(), e);
              return false;
          }
      }
docs: Uninstalls Java classes ({@code Extension}s, {@code Plugin}s, {@code PassiveScanner}s) of the given {@code addOn}. Should
  be called when the add-on must be temporarily uninstalled for an update of a dependency.
  <p>
  The Java classes are uninstalled in the following order (inverse to installation):
  <ol>
  <li>Passive scanners;</li>
  <li>Active scanners;</li>
  <li>Extensions.</li>
  </ol>
  
  @param addOn the add-on that will be softly uninstalled
  @param callback the callback that will be notified of the progress of the uninstallation
  @return {@code true} if the add-on was uninstalled without errors, {@code false} otherwise.
  @since 2.4.0
  @see Extension
  @see PassiveScanner
  @see org.parosproxy.paros.core.scanner.Plugin