public static @NotNull DependencyScope coveringUseCasesOf(@NotNull DependencyScope scope1, @NotNull DependencyScope scope2) {
    if (scope1.coversUseCasesOf(scope2)) return scope1;
    if (scope2.coversUseCasesOf(scope1)) return scope2;
    // At this point, we know that `scope1` and `scope2` are different, neither is COMPILE, and they're not PROVIDED+TEST either.
    // The remaining cases are:
    // - PROVIDED+RUNTIME = COMPILE
    // - TEST+RUNTIME = COMPILE (wider than necessary, but there's no better alternative)
    return COMPILE;
  }
public static @NotNull DependencyScope coveringUseCasesOf(@NotNull DependencyScope scope1, @NotNull DependencyScope scope2)