private boolean hasNewVersion(@NotNull UpdateChannel channel) {
   BuildInfo latestBuild = channel.getLatestBuild();
   if (latestBuild == null
       || latestBuild.getNumber() == null
       || myUpdateSettings
           .getIgnoredBuildNumbers()
           .contains(latestBuild.getNumber().asStringWithoutProductCode())) {
     return false;
   }
   return myCurrentBuild.compareTo(latestBuild.getNumber()) < 0;
 }
  public static boolean isIncompatible(final IdeaPluginDescriptor descriptor) {
    try {
      BuildNumber buildNumber = getBuildNumber();

      if (!StringUtil.isEmpty(descriptor.getSinceBuild())) {
        BuildNumber sinceBuild =
            BuildNumber.fromString(descriptor.getSinceBuild(), descriptor.getName());
        if (sinceBuild.compareTo(buildNumber) > 0) {
          return true;
        }
      }

      if (!StringUtil.isEmpty(descriptor.getUntilBuild()) && !buildNumber.isSnapshot()) {
        BuildNumber untilBuild =
            BuildNumber.fromString(descriptor.getUntilBuild(), descriptor.getName());
        if (untilBuild.compareTo(buildNumber) < 0) {
          return true;
        }
      }
    } catch (RuntimeException ignored) {
    }

    return false;
  }