def resolveVersions()

in multiversion/src/main/scala/multiversion/outputs/ResolutionIndex.scala [214:246]


  def resolveVersions(
      verForces: Set[VersionConfig],
      compat: VersionCompatibility
  ): Set[VersionConfig] = {
    def hasOverride(v: Version): Boolean = {
      val lower = v.repr.toLowerCase(Locale.ENGLISH)
      overrideTags.exists(t => lower.contains(t)) && !lower.contains("shaded")
    }
    def lessThan(v1: Version, v2: Version): Boolean =
      (!hasOverride(v1) && hasOverride(v2)) || (v1 < v2 && hasOverride(v1) == hasOverride(v2))
    // The "winners" are the highest or forced selected versions
    val winners = mutable.Set.empty[VersionConfig]
    verForces.foreach { case challenger @ VersionConfig(_, version, force) =>
      val isCompatible = winners.exists { case w @ VersionConfig(_, wversion, wforce) =>
        if (isCompat(version.repr, wversion.repr, compat)) {
          if (
            (lessThan(wversion, version) && force == wforce)
            || (force && !wforce)
          ) {
            winners.remove(w)
            winners.add(challenger)
          }
          true
        } else {
          false
        }
      }
      if (!isCompatible) {
        winners.add(challenger)
      }
    }
    winners.toSet
  }