private MavenVersion maxSubjectToUpperBound(List<MavenVersion> allVersions) { MavenVersion absoluteMax = Collections.max(allVersions); if (!lookupParams.upperBoundGiven()) return absoluteMax; Collections.sort(allVersions); for (int i = 0; i < allVersions.size(); i++) { if (allVersions.get(i).lessThan(lookupParams.getUpperBound()) && i + 1 <= allVersions.size() - 1 && allVersions.get(i + 1).greaterOrEqual(lookupParams.getUpperBound())) return allVersions.get(i); if (allVersions.get(i).lessThan(lookupParams.getUpperBound()) && i + 1 == allVersions.size()) return allVersions.get(i); } return null; }