@VisibleForTesting
  static boolean shouldShowWhatsNew(@NotNull BuildNumber current, boolean majorEap) {
    if (ExperimentalUI.Companion.getForcedSwitchedUi()) {
      return false;
    }
    UpdateSettings settings = UpdateSettings.getInstance();

    int lastShownFor = settings.getWhatsNewShownFor();
    if (lastShownFor == 0) {
      // migration from `PropertiesComponent`; safe to drop around 2024.2
      String fallbackProperty = "ide.updates.whats.new.shown.for";
      PropertiesComponent properties = PropertiesComponent.getInstance();
      lastShownFor = properties.getInt(fallbackProperty, 0);
      if (lastShownFor != 0) {
        properties.unsetValue(fallbackProperty);
        settings.setWhatsNewShownFor(lastShownFor);
      }
    }
    if (lastShownFor == 0) {
      // this ensures that the "what's new" page is shown _only_ for users who have updated from a previous version
      // (to detect updates, the method relies on imported settings; users starting from scratch are out of luck)
      settings.setWhatsNewShownFor(current.getBaselineVersion());
      return false;
    }

    if (!majorEap && lastShownFor < current.getBaselineVersion()) {
      Product product = loadProductData();
      if (product != null) {
        // checking whether the actual "what's new" page is relevant to the current release
        int lastRelease = product.getChannels().stream()
          .filter(channel -> channel.getLicensing() == UpdateChannel.Licensing.RELEASE && channel.getStatus() == ChannelStatus.RELEASE)
          .flatMap(channel -> channel.getBuilds().stream())
          .mapToInt(build -> build.getNumber().getBaselineVersion())
          .max().orElse(0);
        if (lastRelease == current.getBaselineVersion()) {
          settings.setWhatsNewShownFor(current.getBaselineVersion());
          return true;
        }
      }
    }

    return false;
  }
@VisibleForTesting
  static boolean shouldShowWhatsNew(@NotNull BuildNumber current, boolean majorEap)