long time = (date != null) ? date.getTimeInMillis() : Long.MAX_VALUE;
long latestDate = Long.MIN_VALUE;
Version latestVersion = null;
VersionIterator iter = history.getAllVersions();
while (iter.hasNext()) {
Version v = iter.nextVersion();
long c = v.getCreated().getTimeInMillis();
if (c > latestDate && c <= time) {
latestDate = c;
latestVersion = v;
}