private PrimaryVersionSpec resolvePagedUpdateVersionSpec( ProjectHistory projectHistory, PagedUpdateVersionSpec baseVersion) { int changes = 0; PrimaryVersionSpec resolvedSpec = baseVersion.getBaseVersionSpec(); int maxChanges = baseVersion.getMaxChanges(); int i = resolvedSpec.getIdentifier(); AbstractChangePackage cp = projectHistory.getVersions().get(i).getChanges(); if (i == projectHistory.getVersions().size() - 1) { return projectHistory.getVersions().get(i).getPrimarySpec(); } do { cp = projectHistory.getVersions().get(++i).getChanges(); } while (cp == null && i < projectHistory.getVersions().size()); // pull at least one change package if (cp.leafSize() > maxChanges) { maxChanges = cp.leafSize(); } while (changes < maxChanges && i < projectHistory.getVersions().size()) { resolvedSpec = projectHistory.getVersions().get(i).getPrimarySpec(); final Version version = projectHistory.getVersions().get(i); final AbstractChangePackage changePackage = version.getChanges(); if (changePackage != null) { final int size = changePackage.leafSize(); if (changes + size >= maxChanges) { resolvedSpec = projectHistory.getVersions().get(i).getPrimarySpec(); break; } changes += size; } i += 1; } return resolvedSpec; }